Регистрация  |  Вход

Получение писем в Salesforce

О сенсеи, вот такой возник вопрос:
как в Salesforce проводить какие-то операции с входящими письмами! Преодолевая стыд спрошу ещё и как ВООБЩЕ хотя бы глянуть на эти письма?!
Всё, что мне пока удалось нагуглить - это очевидный InboundEmail. Но с какой стороны его присобачить -никаких идей. Без вас никак!

О сенсеи, вот такой возник вопрос:
как в Salesforce проводить какие-то операции с входящими письмами! Преодолевая стыд спрошу ещё и как ВООБЩЕ хотя бы глянуть на эти письма?! 
Всё, что мне пока удалось нагуглить - это очевидный InboundEmail. Но с какой стороны его присобачить -никаких идей. Без вас никак! 

Sebastian Pareyro
Но с какой стороны его присобачить

Сзади

[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
(сам не использовал)

RasMisha
https://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_email_inbound_using.htm
?

вот тут немного подробнее
https://developer.salesforce.com/page/An_Introduction_To_Email_Services_on_Force.com

[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];

может случиться проблема если fromName не будет состоять из двух слов. Но это уже не относится к самой теме

Отличный пример. Спасибо большой. 
Однозначно полезный материал.
Многим, кто не сталкивался будет хорошим пособием.

Только вот небольшое замечание - если не ошибаюсь, то у Contact Lastname является обязательным полем. 
Вот здесь
[code]
List<String> SplitNames = email.fromName.split(' ');
Contact = new Contact();
Contact.FirstName = SplitNames[0];
Contact.LastName = SplitNames[1];
[/code]
может случиться проблема если fromName не будет состоять из двух слов. Но это уже не относится к самой теме :) 

Да, точно. Я упустил из виду. Спасибо!

Да, точно. Я упустил из виду. Спасибо!