javaMail的实现

来源:互联网 发布:wish在17年好做吗 知乎 编辑:程序博客网 时间:2024/06/17 04:04

SMTP协议(发送邮件)
把处理用户smtp请求(邮件发送请求)的邮件服务器称之为SMTP服务器,默认的端口为:25
POP3协议(接收)
把处理用户pop3请求(邮件接收请求)的邮件服务器称之为POP3服务器,默认端口为:110
服务器名称举例
smtp.163.com,pop3.163.com等
javaMail的实现
实现依赖于两个jar包:mail.jar,activation.jar
activation.jar:具体负责mail的数据源和类型等
实现过程中的核心类:
1、Session —————— 作用相当于jdbc中的connection
2、MimeMessage ———邮件信息
3、Transport—————-发送邮件
4、MimeMultipart,MimeBodyPart——附件相关类
这里写图片描述
具体实现代码如下:

Properties props = new Properties();props.setProperty("mail.host", "smtp.163.com");//设置服务器props.setProperty("mail.smtp.auth", "true");//设置是否登录认证,true为是Authenticator authenticator = new Authenticator(){    public PasswordAuthentication getPasswordAuthentication(){    return new PasswordAuthentication("xxxxx", "password") ;//设置用户名(xxxxx)和密码(password)    }};Session session = Session.getInstance(props, authenticator);MimeMessage msg = new MimeMessage(session);try {    msg.setFrom(new InternetAddress("xxxxx@163.com"));//设置发送邮箱,与之前设置的用户名一致//下面设置接收邮箱,如果是RecipientType.CC,则为抄送,如果是RecipientType.BCC则为暗送msg.addRecipients(RecipientType.TO,"aaaaa@163.com");msg.setSubject("一封邮件");//设置主题msg.setContent("这是一封邮件", "text/html;charset=utf-8");//设置内容//下面是添加附件的过程,如果不需要可以删除下面这一段//添加附件开始==============================================      MimeMultipart mpart = new MimeMultipart();//主体的集合MimeBodyPart mbp1 = new MimeBodyPart();//主体部分MimeBodyPart mbp2 = new MimeBodyPart();msg.setContent(mpart);/*把邮件内容设置成多部间的集合对象,有了这一步,上面的 msg.setContent("这是一封邮件","text/html;charset=utf-8");将会被覆盖,想设置邮件内容,则需要 mbp2.setContent("这是一封邮件", "text/html;charset=utf-8");来实现*/mbp1.setContent("这是一封邮件", "text/html;charset=utf-8");mbp2.attachFile(new File("D:/1.png"));//设置附件mbp2.setFileName("meitu.png");//设置文件名称,如果是英文则正常,如果是英文则应该如下注释中的操作//mbp.setFileName(MimeUtility.encodeText("美图.png"));//如果文件名为中文则需要编码mpart.addBodyPart(mbp1);mpart.addBodyPart(mbp2);//添加附件结束==================================================      Transport.send(msg);//发送} catch (AddressException e) {    e.printStackTrace();} catch (MessagingException e) {    e.printStackTrace();} catch (IOException e) {    e.printStackTrace();}

以上是我学习javaMail的总结,分享一下,希望可以帮助到其他人

1 0