创建数据处理器对象------->创建数据源对象【编码格式】_javamail发送邮件">
赞
踩
目录
2.2、抄送多个邮箱地址 邮件内容包含HTML标签,要设置编码格式
使用:BodyPart 的 子类 MimeBodyPart()
根据java的基础库中的定规则:
设置:该类为用final关键字修饰,表明该类不可被继承
1.1、定义私有构造方法,表明该类不能有对象
1.2、定义静态的createSession()方法 返回一个session会话对象
1.2.1、 定义Properties对象,将SMTP服务器的连接信息进行存储
SMTP主机名
主机端口号
是否需要用户认证
是否启用TLS加密
注意:Properties存储的是键值对;
一定要保证键和值的正确性,否则空制台会报553的错误。
1.2.1、 创建Session会话
参数1:SMTP服务器连接参数
参数2:账号和密码的授权认证对象
1.2.3、将session设置为开发者模式,便于观察
整理所有代码:
- public final class JavaMailUtils {
- private JavaMailUtils() {
- }
-
- public static Session createSession() {
-
- String username = "邮箱名称(网易163或者162邮箱)";
- String password = "相对应的密码";
- // STMP服务器连接信息
- Properties props = new Properties();
- props.put("mail.smtp.host", "smtp.163.com");
- props.put("mail.smtp.port", "25");// 端口号 163: 465 || 126:25
- props.put("mail.smtp.auth", "true");
- props.put("mail.smtp.starttls.emable", "true");
- Session session = Session.getInstance(props, new Authenticator() {
- @Override
- protected PasswordAuthentication getPasswordAuthentication() {
- return new PasswordAuthentication(username, password);
- }
- });
- session.setDebug(true);
- return session;
- }
- }
1.创建Session会话 :session
2.创建邮件对象:MineMessage(session)邮件标题: setSubject()
邮件正文: setText()
发件人: setFrom()
抄送人 : setRecipent()
3.发送: Transport.send(message)
- public static void main(String[] args) {
- try {
-
- Session session = JavaMailUtils.createSession();
-
- MimeMessage message = new MimeMessage(session);
- message.setSubject("这是一封测试邮件,别害怕!"); // 设置邮件标题
- message.setText("爱你孤身走暗巷,爱你走得很安详!"); // 设置邮件正文
- message.setFrom(new InternetAddress("billgogoogooo@126.com")); // 发件人
- message.setRecipient(RecipientType.TO, new InternetAddress("55094839@qq.com"));
-
- Transport.send(message);
- } catch (MessagingException e) {
- e.printStackTrace();
- }
- }
message.setText("<b>太阳</b>"utf-8","html");
- public static void main(String[] args) {
- try {
-
- Session session = JavaMailUtils.createSession();
-
- MimeMessage message = new MimeMessage(session);
- message.setFrom(new InternetAddress("163邮箱"));
- message.setRecipient(RecipientType.TO, new InternetAddress("QQ邮箱"));
- message.setRecipients(RecipientType.CC,
- new InternetAddress[] {new InternetAddress("QQ邮箱"),
- new InternetAddress("QQ邮箱")});
- message.setSubject("测试邮件");
-
- message.setText("<Strong>内容</Strong>","utf-8","html");
-
- Transport.send(message);
- } catch (AddressException e) {
- e.printStackTrace();
- } catch (MessagingException e) {
- e.printStackTrace();
- }
- }
大体框架不变:只在基本步骤中的邮件正文部分有所改变
邮件仅包含正文:setText("----内容------")
邮件中既包含正文,又包含附件
textPart.setContent("------内容----------- ")
filePart.setFileName("附件文件显示名称");
上传附件文件:
设置:数据处理器------->创建数据处理器对象------->创建数据源对象【编码格式】
filePart.setDataHandler(
new DataHandler(
new ByteArrayDataSource(
Files.readAllBytes(Paths.get("C:\\Users027.jpg")),
"application/octet-stream")));
定义Mutlipart对象 :multipart
调用multipart.addBodyPart() 将正文和附件组装起来
message调用setContent("multipart")
- public static void main(String[] args) {
- try {
- Session session = JavaMailUtils.createSession();
- MimeMessage message = new MimeMessage(session);
- message.setFrom(new InternetAddress("163邮箱"));
- message.setRecipient(RecipientType.TO, new InternetAddress("QQ邮箱"));
- message.setRecipients(RecipientType.CC,
- new InternetAddress[] {new InternetAddress("QQ邮箱"),
- new InternetAddress("QQ邮箱")});
- message.setSubject("测试邮件");
-
- BodyPart textPart = new MimeBodyPart();
- textPart.setContent("<b>脑子</b>", "text/html;charset=utf-8");
-
- BodyPart filePart = new MimeBodyPart();
- filePart.setFileName("李云龙阁下");
- filePart.setDataHandler(
- new DataHandler(
- new ByteArrayDataSource(
- Files.readAllBytes(Paths.get("C:\\Users027.jpg")),
- "application/octet-stream")));
-
- Multipart multipart = new MimeMultipart();
- multipart.addBodyPart(textPart);
- multipart.addBodyPart(filePart);
-
- message.setContent(multipart);
-
- Transport.send(message);
- } catch (AddressException e) {
- e.printStackTrace();
- } catch (MessagingException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
可以创建一个StringBuilder对象,
调用 append() :追加正文内容
(和2.3中的附件类似)
设置:数据处理器------->创建数据处理器对象------->创建数据源对象【编码格式】
调用setHeader()-----设置图片的内容ID
- public static void main(String[] args) {
- try {
- Session session = JavaMailUtils.createSession();
- MimeMessage message = new MimeMessage(session);
- message.setFrom(new InternetAddress("163邮箱"));
- message.setRecipient(RecipientType.TO, new InternetAddress("QQ邮箱"));
- message.setRecipients(RecipientType.CC,
- new InternetAddress[] {new InternetAddress("QQ邮箱"),
- new InternetAddress("QQ邮箱")});
- message.setSubject("触不可及");
-
- BodyPart textPart = new MimeBodyPart();
- StringBuilder contentText = new StringBuilder();
- contentText.append("<h3>触不可及</h3>");
- contentText.append("<p>一个残疾富豪和他的黑人伙计之间的故事</p>");
- contentText.append("<img src=\"cid:cbkj\"/>");
- textPart.setContent(contentText.toString(),"text/html;charset=utf-8");
-
- BodyPart imagePart = new MimeBodyPart();
- imagePart.setDataHandler(
- new DataHandler(
- new ByteArrayDataSource(
- Files.readAllBytes(Paths.get("C:\\Pictures\\触不可及.webp")),
- "application/octet-stream")));
- imagePart.setHeader("Content-ID", "cbkj");
-
- Multipart multipart = new MimeMultipart();
- multipart.addBodyPart(textPart);
- multipart.addBodyPart(imagePart);
- message.setContent(multipart);
-
- Transport.send(message);
- } catch (AddressException e) {
- e.printStackTrace();
- } catch (MessagingException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。