package email; import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.Address; import javax.mail.Multipart; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import java.net.URL; import java.util.Properties; /** * 读取本地文件为附件 */ public class EmailTest1 { private static final String MAIL_IMAP_STARTTLS_ENABLE = "mail.imap.starttls.enable"; private static final String MAIL_SMTP_STARTTLS_ENABLE = "mail.smtp.starttls.enable"; private static final String MAIL_SMTP_SSL_TRUST = "mail.smtp.ssl.trust"; public static void main(String[] args) throws Exception { String host = "smtp.163.com"; //163的host,其他的自己去百度 String username = "[email protected]";//邮箱地址,就是你申请的邮箱账号 String password = "123456";//邮箱密码 Properties props = System.getProperties(); //设置用户的认证方式 props.setProperty("mail.smtp.auth", "true"); //设置传输协议 props.setProperty("mail.transport.protocol", "smtp"); //设置发件人的SMTP服务器地址 props.setProperty("mail.smtp.host", host); //端口 props.setProperty("mail.smtp.port", "465"); //debug,一般不配置这个参数,调试的时候用 props.setProperty("mail.debug", "true"); //使用ssl需要加如下参数 props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); Session session = Session.getInstance(props, null); //附件处理 Multipart multipart = new MimeMultipart(); MimeBodyPart messageBodyPart1 = new MimeBodyPart(); String content = "abcdefg"; //正文,可以是html文档 messageBodyPart1.setContent(content, "text/html;charset=utf-8"); multipart.addBodyPart(messageBodyPart1); MimeBodyPart messageBodyPart2 = new MimeBodyPart(); //邮件中包含本地附件 String path = "F:\\fff.docx"; // 1、得到数据源 FileDataSource fds = new FileDataSource(path); // 2、得到附件本身并至入BodyPart messageBodyPart2.setDataHandler(new DataHandler(fds)); //3、设置附件名 messageBodyPart2.setFileName("fff.docx"); multipart.addBodyPart(messageBodyPart2); //邮件中包含网络附件 String path2 = "http://www.pptbz.com/pptpic/UploadFiles_6909/201203/2012031220134655.jpg"; URL url = new URL(path2); DataHandler dataHandler = new DataHandler(url); MimeBodyPart messageBodyPart3 = new MimeBodyPart(); messageBodyPart3.setDataHandler(dataHandler); messageBodyPart3.setFileName("2012031220134655.jpg"); multipart.addBodyPart(messageBodyPart3); MimeMessage replyMessage = new MimeMessage(session); //发件箱,大部分与邮箱账号一致 InternetAddress mailFrom = new InternetAddress("[email protected]"); //收件箱,有一段时间申请的QQ邮箱好像默认关闭了 pop3和smtp,所以qq邮箱可能会收不到邮件 InternetAddress mailTo = new InternetAddress("[email protected]"); replyMessage.setFrom(mailFrom); replyMessage.setContent(multipart); // replyMessage.setContent("简单的纯文本邮件!", "text/html;charset=UTF-8"); replyMessage.setSubject("mail test test test"); replyMessage.setReplyTo(new Address[]{mailFrom}); replyMessage.setRecipient(javax.mail.Message.RecipientType.TO, mailTo); replyMessage.setSender(mailFrom); Transport transport = session.getTransport("smtp"); try { transport.connect(host, username, password); //发送邮件 transport.sendMessage(replyMessage, new Address[]{mailTo}); } catch (Exception e) { } finally { transport.close(); } System.out.println("success"); } }
maven 依赖
<dependency> 3 <groupId>javax.mail</groupId> 4 <artifactId>mail</artifactId> 5 <version>1.4.4</version> 6 </dependency>