Sending emails by using SingleEmailMessage
Sending emails
By using Single email message we can send emails. SingleEmailMessage class contains methods for sending emails. SingleEmailMessage contains below methods.
- setBccAddresses(String[])
- setCcAddresses(String[])
- setCharset(String)
- setDocumentAttachments(ID[])
- setFileAttachments(EmailFileAttachment[])
- setHtmlBody(String)
- setInReplyTo(String)
- setPlainTextBody(String)
- setOrgWideEmailAddressId(ID)
- setReferences(String)
- setSubject(String)
- setTargetObjectId(ID)
- setToAddresses(String[])
- setWhatId(ID)
Example Apex Class
Below class is a simple apex program to understand single email message. I have created vf page with button. & when we click on that button that calls sending emails method in below class. Try this for sending emails
public class singleEmailExample {
public PageReference sendingEmail() {
Messaging.SingleEmailMessage semail = new Messaging.SingleEmailMessage();
String[] sendingTo = new String[]{'XXXXXXXXXXXXXX@gmail.com'};
semail.setToAddresses(sendingTo);
String[] sendingToBccAdd = new String[]{'XXXXXXXXX@gmail.com'};
semail.setBccAddresses(sendingToBccAdd);
String[] sendingTocAdd = new String[]{'XXXXXXXXXXX@gmail.com'};
semail.setCcAddresses(sendingTocAdd);
semail.setSubject('Single Email message Example');
semail.setPlainTextBody('Hello!!!!!!!!!!This is a test email to test single email message program');
Messaging.sendEmail(new Messaging.SingleEmailMessage[] {semail});
return null;
}
}
Apex Page
<apex:page controller="singleEmailExample">
<apex:form >
<apex:commandButton value="SendEmail" action="{!sendingEmail}"/>
</apex:form>
</apex:page>
this is not working for me
public PageReference sendingemail(){
Messaging.SingleEmailMessage semail=new Messaging.SingleEmailMessage();
string[] sendingTo=new string[]{‘sahityaraghavreddy@gmail.comj’};
semail.setToAddresses(sendingTo);
semail.setSubject(‘subject single email message’);
// semail.setPlainTextBody(‘Hello!!!!!!!!!!This is a test email to test single email message program’);
semail.setPlainTextBody(‘hello’);
Messaging.SendEmail(new Messaging.SingleEmailMessage[]{semail});
return null;
}
}
this is my method
works fine…no isusse,,i typed j in the email field,,thats why i didnt email
how to write test class for the above “singleEmailExample” class
@isTest
public class SendEmailTest {
@isTest
public static void Test()
{
SinglEmailExample email = New SinglEmailExample();
email.SendingEmail();
}
}
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
mail.setToAddresses(AccidToEmailmap.get(o.AccountId));
// mail.setTargetObjectId(le.id);
mail.setTemplateId(devNameToIdMap.get(‘xyz_Generated’));
List attachmentList = new List();
List attach = [SELECT Id, Name, Body, ContentType FROM Attachment WHERE Parentid = : o.Id AND (Name Like ‘xyz%’) order by CreatedDate desc];
for(Attachment atch : attach){
if(atch.Name.StartsWith(‘xyz’)){
Messaging.Emailfileattachment efa = new Messaging.Emailfileattachment();
efa.setFileName(atch.Name);
efa.setBody(atch.Body);
attachmentList.add(efa);
break;
}
}
Hello! I am a beginner, so please excuse me if this is an elementary question:
String[] sendingTo = new String[]{‘XXXXXXXXXXXXXX@gmail.com’};
semail.setToAddresses(sendingTo);
Could that be also written just as below? If not, why not? Thank you!
sememail.setToAddresses(‘XXXXXXXXXXXXXX@gmail.com’);
setToAddresses() function takes String Array as argument. If you would like to pass the addresses directly to the function, pass it as below.
sememail.setToAddresses({‘XXXXXXXXXXXXXX@gmail.com’});
(with curly braces)
You can include more of the addresses, separated by comma.