О сенсеи, вот такой возник вопрос:
как в Salesforce проводить какие-то операции с входящими письмами! Преодолевая стыд спрошу ещё и как ВООБЩЕ хотя бы глянуть на эти письма?!
Всё, что мне пока удалось нагуглить - это очевидный InboundEmail. Но с какой стороны его присобачить -никаких идей. Без вас никак!
О сенсеи, вот такой возник вопрос: как в Salesforce проводить какие-то операции с входящими письмами! Преодолевая стыд спрошу ещё и как ВООБЩЕ хотя бы глянуть на эти письма?! Всё, что мне пока удалось нагуглить - это очевидный InboundEmail. Но с какой стороны его присобачить -никаких идей. Без вас никак!
[quote="Sebastian Pareyro"]Но с какой стороны его присобачить[/quote] Сзади
https://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_email_inbound_using.htm ?
Почитай еще про Email to Salesforce, может будет полезно
https://help.salesforce.com/apex/HTViewHelpDoc?id=email_my_email_2_sfdc.htm
(сам не использовал)
Почитай еще про Email to Salesforce, может будет полезно https://help.salesforce.com/apex/HTViewHelpDoc?id=email_my_email_2_sfdc.htm (сам не использовал)
[quote="RasMisha"]https://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_email_inbound_using.htm ?[/quote] вот тут немного подробнее https://developer.salesforce.com/page/An_Introduction_To_Email_Services_on_Force.com
С П А С И Б О!
Начало проясняться!
С П А С И Б О! Начало проясняться!
Потом как получится сделать твой таск расскажи пожалуйста в двух словах что ты планировал сделать и что из этого получилось.
Потом как получится сделать твой таск расскажи пожалуйста в двух словах что ты планировал сделать и что из этого получилось.
Обязательно! Но вряд ли это будет раньше следующей недели, т.к. быстро я не умею. Я ещё не настоящий сварщик.
Обязательно! Но вряд ли это будет раньше следующей недели, т.к. быстро я не умею. Я ещё не настоящий сварщик.
Короче, что-то я переоценил сложность задачи. Заняла она несколько часов (и те потрачены на ознакомление с эмейл сервисом). Не знаю, есть ли смысл описывать таск, т.к. он был чисто учебным и простым, как выяснилось, даже для меня.
Короче, что-то я переоценил сложность задачи. Заняла она несколько часов (и те потрачены на ознакомление с эмейл сервисом). Не знаю, есть ли смысл описывать таск, т.к. он был чисто учебным и простым, как выяснилось, даже для меня.
Ну конечно есть смысл. В двух словах и небольшой пример кода.
Кому-нибудь пригодится. А может кто искать будет в интернете и придет на наши форум как раз за этой информацией
Ну конечно есть смысл. В двух словах и небольшой пример кода. Кому-нибудь пригодится. А может кто искать будет в интернете и придет на наши форум как раз за этой информацией
Если кратко, то целью было следующее:
При получении письма список контактов проверяется на наличие адреса, с которого письмо пришло, если такой найдётся, то при наличии прикреплённого файла в письме, этот файл аттачится в этот контакт. Если контакта такого нет, то создаётся новый, с именем отправителя и по той же схему аттачмент.
Также при загрузке файла проверяется, нет ли такого среди загруженных, если есть - то переименовывается, а после этого всего отправляется на дропбокс - но это уже отдельная история, не относящаяся к теме.
//Собственно, класс для работы с входящими письмами
global class GetEmailClass implements Messaging.InboundEmailHandler {
Public contact Contact {get; set;}global Messaging.InboundEmailResult handleInboundEmail(Messaging.InboundEmail email, Messaging.Inboundenvelope envelope) {
Messaging.InboundEmailResult result = new Messaging.InboundEmailResult();
//Проверка контактов на наличие почты с таким адресом
List <Contact> Contactadress = [SELECT Id, Name, Email From Contact
WHERE Email = :email.fromAddress];
//При отсутствии такого контакта создаём новый
if (Contactadress.isEmpty()){
//Имя для контакта создаём из имени владельца почты, делая split по пробелу
List<String> SplitNames = email.fromName.split(' ');
Contact = new Contact();
Contact.FirstName = SplitNames[0];
Contact.LastName = SplitNames[1];
Contact.Email = Email.fromAddress;
insert Contact;
}
else {
Contact = Contactadress[0];
}
//Ну и загрузка аттачмента из прикреплённого к письму файла
for (Messaging.Inboundemail.binaryAttachment biattachment : email.binaryAttachments) {
Attachment attachment = new Attachment();
attachment.Name = biattachment.fileName;
attachment.Body = biattachment.body;
attachment.ParentId = Contact.id;
insert attachment;
}
Ну, как смог.
Если кратко, то целью было следующее: При получении письма список контактов проверяется на наличие адреса, с которого письмо пришло, если такой найдётся, то при наличии прикреплённого файла в письме, этот файл аттачится в этот контакт. Если контакта такого нет, то создаётся новый, с именем отправителя и по той же схему аттачмент. Также при загрузке файла проверяется, нет ли такого среди загруженных, если есть - то переименовывается, а после этого всего отправляется на дропбокс - но это уже отдельная история, не относящаяся к теме. [code] //Собственно, класс для работы с входящими письмами global class GetEmailClass implements Messaging.InboundEmailHandler { Public contact Contact {get; set;} global Messaging.InboundEmailResult handleInboundEmail(Messaging.InboundEmail email, Messaging.Inboundenvelope envelope) { Messaging.InboundEmailResult result = new Messaging.InboundEmailResult(); //Проверка контактов на наличие почты с таким адресом List <Contact> Contactadress = [SELECT Id, Name, Email From Contact WHERE Email = :email.fromAddress]; //При отсутствии такого контакта создаём новый if (Contactadress.isEmpty()){ //Имя для контакта создаём из имени владельца почты, делая split по пробелу List<String> SplitNames = email.fromName.split(' '); Contact = new Contact(); Contact.FirstName = SplitNames[0]; Contact.LastName = SplitNames[1]; Contact.Email = Email.fromAddress; insert Contact; } else { Contact = Contactadress[0]; } //Ну и загрузка аттачмента из прикреплённого к письму файла for (Messaging.Inboundemail.binaryAttachment biattachment : email.binaryAttachments) { Attachment attachment = new Attachment(); attachment.Name = biattachment.fileName; attachment.Body = biattachment.body; attachment.ParentId = Contact.id; insert attachment; } [/code] Ну, как смог.
Отличный пример. Спасибо большой.
Однозначно полезный материал.
Многим, кто не сталкивался будет хорошим пособием.
Только вот небольшое замечание - если не ошибаюсь, то у Contact Lastname является обязательным полем.
Вот здесь
List<String> SplitNames = email.fromName.split(' ');
Contact = new Contact();
Contact.FirstName = SplitNames[0];
Contact.LastName = SplitNames[1];
Отличный пример. Спасибо большой. Однозначно полезный материал. Многим, кто не сталкивался будет хорошим пособием. Только вот небольшое замечание - если не ошибаюсь, то у Contact Lastname является обязательным полем. Вот здесь [code] List<String> SplitNames = email.fromName.split(' '); Contact = new Contact(); Contact.FirstName = SplitNames[0]; Contact.LastName = SplitNames[1]; [/code] может случиться проблема если fromName не будет состоять из двух слов. Но это уже не относится к самой теме :)
Да, точно. Я упустил из виду. Спасибо!
Да, точно. Я упустил из виду. Спасибо!