Commit ddb4a984 by ClassmateWang

2021-10-22 16:29 完成\JAVA\网络\5)发送E-mail.md

parent 8a4ddee7
-- "a/JAVA/\347\275\221\347\273\234/5\357\274\211\345\217\221\351\200\201E-mail.md" # 5)发送Email
# 5)发送Email
![image-20211022152518358](https://wangnotes.oss-cn-beijing.aliyuncs.com/notesimage/image-20211022152518358.png)
```java
package Socket.mail;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.io.Console;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
import java.util.Properties;
/**
* @BelongsProject: JavaLearnAll
* @BelongsPackage: Socket.mail
* @Author: Wang Haipeng
* @CreateTime: 2021-10-22 14:40
* @Description: JavaMail 测试
*/
public class MailTest {
public static void main(String[] args) throws IOException, MessagingException {
/*邮件服务器的配置文件*/
Properties props = new Properties();
/*Paths.get
* param1: 路径名 可以是相对路径也可以是绝对路径
* param: 文件名*/
InputStream in = Files.newInputStream(Paths.get("src/main/java/Socket/mail/mail.properties"));
props.load(in);
List<String> lines= Files.readAllLines(Paths.get("src/main/java/Socket/mail/mail.txt"), Charset.forName("UTF-8"));
String from = lines.get(0);
String to = lines.get(1);
String subject = lines.get(2);
StringBuilder builder = new StringBuilder();
for (int i = 3;i<lines.size() ;i++){
builder.append(lines.get(i));
builder.append("\n");
}
/*
Java 要与Console进行交互,不总是能得到可用的Java Console类的。一个JVM是否有可用的Console,依赖于底层平台和JVM如何被调用。
如果JVM是在交互式命令行(比如Windows的 cmd,linux/unix的 terminal)中启动的,并且输入输出没有重定向到另外的地方,才可得到一个可用的Console实例。
这里在Idea 中执行的时候无法获取Console 实例
*/
Console console = System.console();
/*从控制台获取SMTP服务器的密码*/
String password = new String(console.readPassword("Password:"));
/*根据SMTP服务器属性文件配置Session 对象*/
Session mailSession = Session.getDefaultInstance(props);
mailSession.setDebug(true);
//mailSession.setDebug(true);
MimeMessage message = new MimeMessage(mailSession);
/*设置发送者*/
message.setFrom(new InternetAddress(from));
/*设置接收者*/
InternetAddress[] addresses = InternetAddress.parse(to);
/*
接收者类型可以是Message.RecipientType.TO,Message.RecipientType.CC和Message.RecipientType.BCC,
TO表示主要接收人,CC表示抄送人,BCC表示秘密抄送人。
*/
message.addRecipients(Message.RecipientType.TO, addresses);
/*设置主题*/
message.setSubject(subject);
/*设置文本的内容*/
message.setText(builder.toString());
Transport tr = mailSession.getTransport();
try{
/*配置发件人的账户名和密码*/
/*
* 如果邮箱设置的了认证码则这里的第二个参数要设置成为认证码而不能是邮件密码
* */
tr.connect(null,password);
tr.sendMessage(message, message.getAllRecipients());
}finally {
tr.close();
}
}
}
```
![image-20211022162658499](https://wangnotes.oss-cn-beijing.aliyuncs.com/notesimage/image-20211022162658499.png)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment