分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 代码编程

使用Apache Commons Email 发生邮件

发布时间:2023-09-06 01:44责任编辑:熊小新关键词:邮件

Apache Commons Email的Maven依赖

1 <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-email -->2 <dependency>3 ????<groupId>org.apache.commons</groupId>4 ????<artifactId>commons-email</artifactId>5 ????<version>1.4</version>6 </dependency>

使用示例:

 ?1 package app.hihn.me.mail.demo; ?2 ??3 import java.net.MalformedURLException; ?4 import java.net.URL; ?5 ??6 import org.apache.commons.mail.DefaultAuthenticator; ?7 import org.apache.commons.mail.Email; ?8 import org.apache.commons.mail.EmailAttachment; ?9 import org.apache.commons.mail.EmailException; 10 import org.apache.commons.mail.HtmlEmail; 11 import org.apache.commons.mail.ImageHtmlEmail; 12 import org.apache.commons.mail.MultiPartEmail; 13 import org.apache.commons.mail.SimpleEmail; 14 import org.apache.commons.mail.resolver.DataSourceUrlResolver; 15 ?16 /** 17 ?* ?18 ?* <pre> 19 ?* <h1>Debugging</h1> 20 ?* The JavaMail API supports a debugging option that will can be very 21 ?* useful if you run into problems. You can activate debugging on any of the 22 ?* mail classes by calling setDebug(true). The debugging output will be written 23 ?* to System.out. 24 ?* ?25 ?* Sometimes you want to experiment with various security setting or features of 26 ?* commons-email. A good starting point is the test class EmailLiveTest and 27 ?* EmailConfiguration which are used for testing commons-email with real SMTP 28 ?* servers. 29 ?* ?30 ?* </pre> 31 ?* ?32 ?* @describe Apache Commons Email 使用示例 33 ?* @author liwen 34 ?* ?35 ?*/ 36 public class SendEmailDemo { 37 ????/** 38 ?????* <pre> 39 ?????* ?40 ?????* Our first example will create a basic email message to "John Doe" and 41 ?????* send it through your Google Mail (GMail) account. 42 ?????* ?43 ?????* The call to setHostName("mail.myserver.com") sets the address of the outgoing SMTP 44 ?????* server that will be used to send the message. If this is not set, the 45 ?????* system property "mail.host" will be used. 46 ?????* ?47 ?????* </pre> 48 ?????* ?49 ?????* @describe 发送内容为简单文本的邮件 50 ?????* @throws EmailException 51 ?????*/ 52 ????public static void sendSimpleTextEmail() throws EmailException { 53 ????????Email email = new SimpleEmail(); 54 ????????email.setHostName("smtp.googlemail.com"); 55 ????????email.setSmtpPort(465); 56 ????????// 用户名和密码为邮箱的账号和密码(不需要进行base64编码) 57 ????????email.setAuthenticator(new DefaultAuthenticator("username", "password")); 58 ????????email.setSSLOnConnect(true); 59 ????????email.setFrom("user@gmail.com"); 60 ????????email.setSubject("TestMail"); 61 ????????email.setMsg("This is a test mail ... :-)"); 62 ????????email.addTo("foo@bar.com"); 63 ????????email.send(); 64 ????} 65 ?66 ????/** 67 ?????* <pre> 68 ?????* ?69 ?????* To add attachments to an email, you will need to use the MultiPartEmail 70 ?????* class. This class works just like SimpleEmail except that it adds several 71 ?????* overloaded attach() methods to add attachments to the email. You can add 72 ?????* an unlimited number of attachments either inline or attached. The 73 ?????* attachments will be MIME encoded. 74 ?????* ?75 ?????* The simplest way to add the attachments is by using the EmailAttachment 76 ?????* class to reference your attachments. 77 ?????* ?78 ?????* In the following example, we will create an attachment for a picture. We 79 ?????* will then attach the picture to the email and send it. 80 ?????* ?81 ?????* </pre> 82 ?????* ?83 ?????* @describe 发送包含附件的邮件(附件为本地资源) 84 ?????* @throws EmailException 85 ?????*/ 86 ????public static void sendEmailsWithAttachments() throws EmailException { 87 ????????// Create the attachment 88 ????????EmailAttachment attachment = new EmailAttachment(); 89 ????????attachment.setPath("mypictures/john.jpg"); 90 ????????attachment.setDisposition(EmailAttachment.ATTACHMENT); 91 ????????attachment.setDescription("Picture of John"); 92 ????????attachment.setName("John"); 93 ?94 ????????// Create the email message 95 ????????MultiPartEmail email = new MultiPartEmail(); 96 ????????email.setHostName("mail.myserver.com"); 97 ????????email.addTo("jdoe@somewhere.org", "John Doe"); 98 ????????email.setFrom("me@apache.org", "Me"); 99 ????????email.setSubject("The picture");100 ????????email.setMsg("Here is the picture you wanted");101 102 ????????// add the attachment103 ????????email.attach(attachment);104 105 ????????// send the email106 ????????email.send();107 ????}108 109 ????/**110 ?????* <pre>111 ?????* 112 ?????* You can also use EmailAttachment to reference any valid URL for files113 ?????* that you do not have locally. When the message is sent, the file will be114 ?????* downloaded and attached to the message automatically.115 ?????* 116 ?????* The next example shows how we could have sent the apache logo to John117 ?????* instead.118 ?????* 119 ?????* </pre>120 ?????* 121 ?????* @describe 发送包含附件的邮件(附件为在线资源)122 ?????* @throws EmailException123 ?????* @throws MalformedURLException124 ?????*/125 ????public static void sendEmailsWithOnlineAttachments() throws EmailException, MalformedURLException {126 ????????// Create the attachment127 ????????EmailAttachment attachment = new EmailAttachment();128 ????????attachment.setURL(new URL("http://www.apache.org/images/asf_logo_wide.gif"));129 ????????attachment.setDisposition(EmailAttachment.ATTACHMENT);130 ????????attachment.setDescription("Apache logo");131 ????????attachment.setName("Apache logo");132 133 ????????// Create the email message134 ????????MultiPartEmail email = new MultiPartEmail();135 ????????email.setHostName("mail.myserver.com");136 ????????email.addTo("jdoe@somewhere.org", "John Doe");137 ????????email.setFrom("me@apache.org", "Me");138 ????????email.setSubject("The logo");139 ????????email.setMsg("Here is Apache‘s logo");140 141 ????????// add the attachment142 ????????email.attach(attachment);143 144 ????????// send the email145 ????????email.send();146 ????}147 148 ????/**149 ?????* <pre>150 ?????* 151 ?????* Sending HTML formatted email is accomplished by using the HtmlEmail152 ?????* class. This class works exactly like the MultiPartEmail class with153 ?????* additional methods to set the html content, alternative text content if154 ?????* the recipient does not support HTML email, and add inline images.155 ?????* 156 ?????* In this example, we will send an email message with formatted HTML157 ?????* content with an inline image.158 ?????* 159 ?????* First, notice that the call to embed() returns a String. This String is a160 ?????* randomly generated identifier that must be used to reference the image in161 ?????* the image tag.162 ?????* 163 ?????* Next, there was no call to setMsg() in this example. The method is still164 ?????* available in HtmlEmail but it should not be used if you will be using165 ?????* inline images. Instead, the setHtmlMsg() and setTextMsg() methods were166 ?????* used.167 ?????* 168 ?????* <pre>169 ?????* 170 ?????* @describe 发送内容为HTML格式的邮件171 ?????* @throws EmailException172 ?????* @throws MalformedURLException173 ?????*/174 ????public static void sendHTMLFormattedEmail() throws EmailException, MalformedURLException {175 ????????// Create the email message176 ????????HtmlEmail email = new HtmlEmail();177 ????????email.setHostName("mail.myserver.com");178 ????????email.addTo("jdoe@somewhere.org", "John Doe");179 ????????email.setFrom("me@apache.org", "Me");180 ????????email.setSubject("Test email with inline image");181 182 ????????// embed the image and get the content id183 ????????URL url = new URL("http://www.apache.org/images/asf_logo_wide.gif");184 ????????String cid = email.embed(url, "Apache logo");185 186 ????????// set the html message187 ????????email.setHtmlMsg("<html>The apache logo - <img src=\"cid:" + cid + "\"></html>");188 189 ????????// set the alternative message190 ????????email.setTextMsg("Your email client does not support HTML messages");191 192 ????????// send the email193 ????????email.send();194 ????}195 196 ????/**197 ?????* <pre>198 ?????* 199 ?????* The previous example showed how to create a HTML email with embedded200 ?????* images but you need to know all images upfront which is inconvenient when201 ?????* using a HTML email template. The ImageHtmlEmail helps you solving this202 ?????* problem by converting all external images to inline images.203 ?????* 204 ?????* First we create a HTML email template referencing some images. All205 ?????* referenced images are automatically transformed to inline images by the206 ?????* specified DataSourceResolver.207 ?????* 208 ?????* </pre>209 ?????* 210 ?????* @describe 发送内容为HTML格式的邮件(嵌入图片更方便)211 ?????* @throws MalformedURLException212 ?????* @throws EmailException213 ?????*/214 ????public static void sendHTMLFormattedEmailWithEmbeddedImages() throws MalformedURLException, EmailException {215 ????????// load your HTML email template216 ????????String htmlEmailTemplate = ".... <img src=\"http://www.apache.org/images/feather.gif\"> ....";217 218 ????????// define you base URL to resolve relative resource locations219 ????????URL url = new URL("http://www.apache.org");220 221 ????????// create the email message222 ????????ImageHtmlEmail email = new ImageHtmlEmail();223 ????????email.setDataSourceResolver(new DataSourceUrlResolver(url));224 ????????email.setHostName("mail.myserver.com");225 ????????email.addTo("jdoe@somewhere.org", "John Doe");226 ????????email.setFrom("me@apache.org", "Me");227 ????????email.setSubject("Test email with inline image");228 229 ????????// set the html message230 ????????email.setHtmlMsg(htmlEmailTemplate);231 232 ????????// set the alternative message233 ????????email.setTextMsg("Your email client does not support HTML messages");234 235 ????????// send the email236 ????????email.send();237 ????}238 239 ????public static void main(String[] args) throws EmailException {240 ????????Email email = new SimpleEmail();241 ????????email.setHostName("smtp.163.com");242 ????????email.setSmtpPort(465);243 ????????email.setAuthenticator(new DefaultAuthenticator("liwenzlw@163.com", "xxxxxxxxxxxxx"));244 ????????email.setSSLOnConnect(true);245 ????????email.setFrom("liwenzlw@163.com", "利文");246 ????????email.setSubject("异常信息");247 ????????email.setMsg("This is a test mail ... :-)");248 ????????email.addTo("1309928657@qq.com");249 ????????email.send();250 ????}251 }

使用Apache Commons Email 发生邮件

原文地址:https://www.cnblogs.com/cristin/p/8496556.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved