做郵件發送的時候,內容一直為空。就自己寫了一個測試類。看看是不是服務器的問題。
下面是代碼
package org.rtx.mail;
import java.util.Date;
import java.util.Properties;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;
public class test {
private static String host = "smtp.qq.com";
private static String username = "xxxx@qq.com";
private static String password = "xxxxxx";
private static int port = 25;
public static void main(String[] args) {
try {
// 3.4 接收人
Properties props = new Properties();
props.put("mail.smtp.host", host);
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.auth", "true");
Session session = Session.getDefaultInstance(props);
session.setDebug(false);
MimeMessage message = new MimeMessage(session);
message.setSubject("我的測試郵件");
// 3.2 郵件發送時間
message.setSentDate(new Date());
// 3.3設置郵箱收件人地址
message.setSender(new InternetAddress("1111@qq.com"));
message.setRecipient(RecipientType.TO, new InternetAddress("1111@qq.com"));
// 3.5內容
message.setText("你好,已經發送成功! 正文...."); // 簡單純文本郵件
message.saveChanges(); // 保存郵件(可選)
Transport transport = session.getTransport("smtp");
transport.connect(host, port, username, password);
transport.sendMessage(message, message.getAllRecipients());
transport.close();
System.out.println("發送成功");
} catch (Exception e) {
e.printStackTrace();
}
}
}
結果報錯了 501 mail from address must be same as authorization user
看翻譯好像是沒有找到發送者地址,檢查代碼發現沒有 設置發送郵件地址
再創建message后添加代碼
message.setFrom(new InternetAddress("xxxx@qq.com"));
問題搞定
如果報錯服務器問題,則需要開啟qq郵箱的smtp 服務