JavaMail发送邮件

来源:互联网 发布:知乎 璇玑图 编辑:程序博客网 时间:2024/06/07 07:06

这是好久之前写的文章了,今天改了改,跟大家分享一下。

 红色字体标记的都可以发送。

import java.util.Date;import java.util.Properties;import javax.activation.DataHandler;import javax.activation.FileDataSource;import javax.mail.Message.RecipientType;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;public class SendMail { /**  * Javamail发送邮件的例子  *   * @param args  */ public static void main(String[] args) throws Exception{    Properties props=new Properties();  //设置协议为smtp  props.setProperty("mail.transport.protocol", "smtp");  props.setProperty("mail.smtp.auth","true");    Session session = Session.getInstance(props);  //开启调试功能  session.setDebug(true);    MimeMessage msg=new MimeMessage(session);  //设置发件人地址  msg.setFrom(new InternetAddress("xxx@163.com"));  //设置收件人地址  msg.setRecipient(RecipientType.TO, new InternetAddress("xxx@163.com"));  //设置邮件主题  msg.setSubject("测试邮件");  msg.setSentDate(new Date());  MimeBodyPart relatedMultipart=new MimeBodyPart();  //设置MimeMultipart的类型为related  MimeMultipart multiPart=new MimeMultipart("related");     MimeBodyPart htmlBodyPart=new MimeBodyPart();  //设置文本内容+html+图片信息  htmlBodyPart.setContent("这是一封测试邮件<br>"+"<a href=http://www.163.com>"+"163.com</a><br>" +"<img src=\"cid:1.jpg\">", "text/html;charset=gb2312");  multiPart.addBodyPart(htmlBodyPart);    MimeBodyPart gifBodyPart=new MimeBodyPart();  //把图片关联到html上  FileDataSource dateSource1=new FileDataSource("d:\\1.jpg");  gifBodyPart.setDataHandler(new DataHandler(dateSource1));  gifBodyPart.setContentID("1.jpg");    multiPart.addBodyPart(gifBodyPart);  relatedMultipart.setContent(multiPart);    //添加附件为1.rar  MimeBodyPart attachBodyPart=new MimeBodyPart();  FileDataSource dataSource2=new FileDataSource("d:\\1.rar");  attachBodyPart.setDataHandler(new DataHandler(dataSource2));  attachBodyPart.setFileName(dataSource2.getName());    //设置MimeMultipart的类型为mix  MimeMultipart allMultipart=new MimeMultipart("mix");  allMultipart.addBodyPart(relatedMultipart);  allMultipart.addBodyPart(attachBodyPart);    msg.setContent(allMultipart);  //更新并保存  msg.saveChanges();    Transport transport = session.getTransport();  //邮件服务器地址、用户名(发件方)、密码(发件方)  transport.connect("smtp.163.com", "username", "password");  transport.sendMessage(msg, msg.getRecipients(RecipientType.TO));  transport.close(); }}