基于SMTP发送邮件的步骤

文章介绍了发送一封邮件的基本步骤,以及如何使用邮件抄送功能、发送附件功能以及如何将图片信息作为邮件内容发送。

目录

发送一封简单的邮件

发送具有抄送功能的邮件

 发送带附件的邮件

将图片作为正文的一部分发送


发送一封简单的邮件

1.建立SMTP服务器连接信息并创建一个会话

String userName="tangjinhui@163.com";//用户名
String password="KULKBPXQDWXYJLOR";//授权码
Properties props = new Properties();
props.put("mail.smtp.host","smtp.163.com");//SMTP主机名
props.put("mail.smtp.port","25");//主机端口号
props.put("mail.smtp.auth","true");//是否需要用户认证
props.put("mail.smtp.starttls.enable","true");//启用TLS加密

//创建会话
Session session = Session.getInstance(props, new Authenticator() {
    @Override
    protected PasswordAuthentication getPasswordAuthentication() {
        //返回用户名和密码的授权对象
         return new PasswordAuthentication(userName, password);
     }
});
return session;

 2.创建邮件对象并设置邮件内容

MimeMessage message = new MimeMessage(session);
message.setSubject("你好!");//标题
message.setText("这是一封测试邮件");//内容
message.setFrom(new InternetAddress("tangjinhui@163.com"));//发件人地址
message.setRecipients(Message.RecipientType.TO, String.valueOf(new InternetAddress("tangjinhui@qq.com")));//收件人地址
ransport.send(message);//发送

对于上述代码需要注意授权码的获取,以网易163邮箱为例,授权码获取步骤如下

 

 

 

 发送后即可查看授权码,授权码仅显示一次,及时复制

发送具有抄送功能的邮件

抄送:将邮件发送给某人的同时,发送给别人,类似群发

message.setRecipients(Message.RecipientType.TO, String.valueOf(new InternetAddress("tangjinhui@qq.com")));//收件人
//抄送地址存放在数组中
message.setRecipients(Message.RecipientType.CC,new InternetAddress []{new InternetAddress("Rice2002@163.com"),new InternetAddress("24434313@qq.com")});
Transport.send(message);

 发送带附件的邮件

对于附件,需要创建对象,将正文内容和附件内容一起封装,再作为邮件的正文内容发送在javamail中使用的是BodyPart类的子类MimeBodyPart类

//定义正文对象
BodyPart textpart = new MimeBodyPart();
    //定义正文内容,若内容为中文,可设置字符集utf-8
     textpart.setContent("hhhhh","text/html;charset=utf-8");
     //定义附件对象
     BodyPart filePart = new MimeBodyPart();
     filePart.setFileName("附件照片");//设置附件标题
     filePart.setDataHandler(
         new DataHandler(
              new ByteArrayDataSource( 
/*参数1:要上传的文件
*参数2:表明要上传的文件类型为二进制文件
*/
    Files.readAllBytes(Paths.get("D:\\JavaNotebook\\JAVA\\PracticeContent\\pic.jpg")),
                            "application/octet-stream")));
//封装
final MimeMultipart multipart = new MimeMultipart();
multipart.addBodyPart(textpart);//添加正文
multipart.addBodyPart(filePart);//添加附件
message.setContent(multipart);//将封装后的对象设置为邮件对象的正文
Transport.send(message);

将图片作为正文的一部分发送

此时的图片需要将图片和正文本拼接在一起发送

在定义邮件附件时,需要定义该附件的Content-ID,这是为了在正文拼接图片路径时,确认图片

//邮件附件
BodyPart imagePart = new MimeBodyPart();
imagePart.setDataHandler(
     new DataHandler(
          new ByteArrayDataSource(
                Files.readAllBytes(Paths.get("D:\\JavaNotebook\\JAVA\\PracticeContent\\
                pic.jpg")),"application/octet-stream")));
imagePart.setHeader("Content-ID","pic");

//邮件正文
BodyPart textPart = new MimeBodyPart();
StringBuilder contentText = new StringBuilder();
contentText.append("<h1>名称</h1>");//标题
contentText.append("这是一封测试图片的邮件");//正文内容
contentText.append("<img src=\"cid:pic\"/>");//
textPart.setContent(contentText.toString(),"text/html;charset=utf-8");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Gurean

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值