JAvaバックエンド送信メール情報
4515 ワード
package com.cn.service.util;
import com.alibaba.fastjson.JSON;
import com.smarthome.service.dto.sendEmail.EmailAuthenticator;
import com.smarthome.service.dto.sendEmail.EmailSendInfo;
import org.apache.log4j.Logger;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Date;
import java.util.Properties;
/**
* Created by abbott on 2018/9/19.
*/
public class EmailSender {
private static final Logger LOGGER = Logger.getLogger(EmailSender.class);
public static boolean sendTextMail(EmailSendInfo mailInfo){
/** */
boolean sendStatus = false;
/** **/
EmailAuthenticator authenticator = null;
Properties pro = mailInfo.getProperties();
if (mailInfo.isValidate()) {
/** , */
authenticator = new EmailAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());
}
/** session**/
Session sendMailSession = Session.getInstance(pro, authenticator);
/**【 】 Session debug **/
sendMailSession.setDebug(true);
try {
/** session **/
MimeMessage mailMessage = new MimeMessage(sendMailSession);
/** **/
Address from = new InternetAddress(mailInfo.getFromAddress());
/** **/
mailMessage.setFrom(from);
/** , **/
Address to = new InternetAddress(mailInfo.getToAddress());
mailMessage.setRecipient(Message.RecipientType.TO, to);
/** **/
mailMessage.setSubject(mailInfo.getSubject(), "UTF-8");
/** **/
mailMessage.setSentDate(new Date());
/** **/
String mailContent = mailInfo.getContent();
mailMessage.setText(mailContent, "UTF-8");
LOGGER.info("---------------------");
Transport.send(mailMessage);
LOGGER.info("+++++++++++++++++++++");
sendStatus = true;
} catch (MessagingException ex) {
LOGGER.info(" ");
ex.printStackTrace();
return sendStatus;
}
return sendStatus;
}
public static void main(String[] args) {
String fromaddr = "QQ ";//
String toaddr = " ";//
String title = "【 】";
String content = "【 】Hello, this is sample for to check send email using JavaMailAPI ";
String port = "587";
String host = "smtp.qq.com";
String userName = "QQ "; //
String password = " "; //
EmailSendInfo mailInfo = new EmailSendInfo();
mailInfo.setMailServerHost(host);
mailInfo.setMailServerPort(port);
mailInfo.setValidate(true);
mailInfo.setUserName(userName);
mailInfo.setPassword(password);
mailInfo.setFromAddress(fromaddr);
mailInfo.setToAddress(toaddr);
mailInfo.setSubject(title);
mailInfo.setContent(content);
/** **/
new EmailSender().sendTextMail(mailInfo);
}
}
QQメールボックスPOP 3とSMTPサーバーのアドレスは以下のように設定します.
メールボックス
POP 3サーバ(ポート995)
SMTPサーバ(ポート465または587)
qq.com
pop.qq.com
smtp.qq.com
SMTPサーバには認証が必要です.
qqメールアドレス異常を送信:
535 Error: ��ʹ����Ȩ���¼�������뿴: http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256 javax.mail.AuthenticationFailedException: 535 Error: ÇëʹÓÃÊÚȨÂëµÇ¼¡£ÏêÇéÇë¿´: http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256 DEBUG SMTP: AUTH LOGIN failed
理由:まだメールボックスにPOP 3/SMTPサービスを開設していないため
解決方法:
メールボックス->設定->アカウントを引いて、POP 3/IMAP/STMTP/Exchange/CArdDAV/CAldDAVサービスを見つけます
オープンサービス:POP 3/SMTPサービス
POP 3/SMTPサービスを開始すると、上のpasswordであるライセンスコードがあります
アリクラウドメールサーバー:
サーバ名
アドレス
非SSLプロトコルポート
SSLプロトコルポート番号
POP
pop3.mxhichina.com
110
995
IMAP
imap.mxhichina.com
143
993
SMTP
smtp.mxhichina.com
25
465
網易163メールボックスサービス:
サーバ名
アドレス
非SSLプロトコルポート
SSLプロトコルポート番号
POP
pop3.163.com
110
995
IMAP
imap.163.com
143
993
SMTP
smtp163.com
25
465/994