Java使用javax.mail傳送郵件
這裡使用maven專案進行開發
1.首先pom中載入jar
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.5.6</version>
</dependency>
2.定義3個類來輔助開發:
第一個類:MailServerConfig:用於定義傳送郵件的基本資訊
public class MailServerConfig {
private String mailServerUrl;
private String mailServerPort;
private String mailAccount;
private String password;
private String sender;
private Boolean proxySet;
private String proxyType;
private String proxyHost;
private String proxyPort;
}
第二個類SimpleAuthenticator:用於定義驗證傳送郵件的賬號密碼:
public class SimpleAuthenticator extends Authenticator {
String userName = null;
String password = null;
public SimpleAuthenticator() {
}
public SimpleAuthenticator(String username, String password) {
this.userName = username;
this.password = password;
}
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(userName, password);
}
}
第三個類MailServerConfig用於使用代理的情況
public class MailServerConfig {
private String mailServerUrl;
private String mailServerPort;
private String mailAccount;
private String password;
private String sender;
private Boolean proxySet;
private String proxyType;
private String proxyHost;
private String proxyPort;
}
3.實現傳送邏輯類:
public class SimpleMailSender {
/**
* 以HTML格式傳送郵件
*
* @param mailInfo
* 待發送的郵件資訊
*/
public boolean sendHtmlMail(MailSendInfo mailInfo) throws MessagingException{
// 判斷是否需要身份認證
SimpleAuthenticator authenticator = null;
Properties pro = mailInfo.getProperties();
// 代理設定
// pro.setProperty("proxySet", "true");
// pro.setProperty("socksProxyHost", "代理地址");
// pro.setProperty("socksProxyPort", "80");
if (mailInfo.getProxySet()) {
if (mailInfo.getProxyType().equals("socks")) {
pro.setProperty("proxySet", "true");
pro.setProperty("socksProxyHost", mailInfo.getProxyHost());
pro.setProperty("socksProxyPort", mailInfo.getProxyPort());
}
}
// 如果需要身份認證,則建立一個密碼驗證器
if (mailInfo.isValidate()) {
authenticator = new SimpleAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());
}
// 根據郵件會話屬性和密碼驗證器構造一個傳送郵件的session
Session sendMailSession = Session.getDefaultInstance(pro, authenticator);
// 根據session建立一個郵件訊息
Message mailMessage = new MimeMessage(sendMailSession);
// 建立郵件傳送者地址
Address from = new InternetAddress(mailInfo.getFromAddress());
// 設定郵件訊息的傳送者
mailMessage.setFrom(from);
// 建立郵件的接收者地址,並設定到郵件訊息中
Address to = new InternetAddress(mailInfo.getToAddress());
// Message.RecipientType.TO屬性表示接收者的型別為TO
mailMessage.setRecipient(Message.RecipientType.TO, to);
// 設定郵件訊息的主題
mailMessage.setSubject(mailInfo.getSubject());
// 設定郵件訊息傳送的時間
mailMessage.setSentDate(new Date());
// MiniMultipart類是一個容器類,包含MimeBodyPart型別的物件
Multipart mainPart = new MimeMultipart();
// 建立一個包含HTML內容的MimeBodyPart
BodyPart html = new MimeBodyPart();
// 設定HTML內容
html.setContent(mailInfo.getContent(), "text/html; charset=utf-8");
System.out.println("mailContent:" + mailInfo.getContent());
mainPart.addBodyPart(html);
// 將MiniMultipart物件設定為郵件內容
mailMessage.setContent(mainPart);
mailMessage.saveChanges();
// 傳送郵件
System.out.println("要傳送郵件了!");
Transport.send(mailMessage);
System.out.println("郵件發完了!");
return true;
}
}
4.測試類test:
@Test
public void test(){
MailServerConfig mailServerConfig = new MailServerConfig();
mailServerConfig.setMailServerUrl("pop3郵件伺服器地址");
mailServerConfig.setMailServerPort("pop3埠");
mailServerConfig.setMailAccount("郵件賬號");
mailServerConfig.setPassword("傳送郵件密碼");
mailServerConfig.setSender("使用者名稱");
mailServerConfig.setProxySet(false);
mailServerConfig.setProxyType("socks");
mailServerConfig.setProxyHost("代理地址");
mailServerConfig.setProxySet(false);
mailServerConfig.setProxyPort("80");
try {
setEmail(mailServerConfig, "接收郵箱地址", "郵件的主題名",
"郵件內容");
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void setEmail(MailServerConfig mailServerConfig, String receiverEmail, String subject, String content)
throws MessagingException {
String mailServerHost = mailServerConfig.getMailServerUrl();
String mailServerPort = mailServerConfig.getMailServerPort();
String fromAddress = mailServerConfig.getMailAccount();
String userName = mailServerConfig.getSender();
String password = mailServerConfig.getPassword();
MailSendInfo mailSendInfo = new MailSendInfo();
mailSendInfo.setMailServerHost(mailServerHost);
mailSendInfo.setMailServerPort(mailServerPort);
mailSendInfo.setFromAddress(fromAddress);
mailSendInfo.setUserName(userName);
mailSendInfo.setPassword(password);
mailSendInfo.setToAddress(receiverEmail);
mailSendInfo.setValidate(true);
mailSendInfo.setSubject(subject);
mailSendInfo.setContent(content);
mailSendInfo.setProxySet(mailServerConfig.getProxySet());
mailSendInfo.setProxyType(mailServerConfig.getProxyType());
mailSendInfo.setProxyHost(mailServerConfig.getProxyHost());
mailSendInfo.setProxyPort(mailServerConfig.getProxyPort());
SimpleMailSender simpleMailSender = new SimpleMailSender();
System.out.println("郵件資訊準備完畢,simpleMailSender開始傳送郵件");
try {
simpleMailSender.sendHtmlMail(mailSendInfo);
} catch (javax.mail.MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("simpleMailSender郵件傳送完畢");
}
這個只是簡單的測試用例!
相關推薦
javax.mail 傳送郵件(工具類)
前言:注意自己郵箱賬號的授權碼 傳送不成功,要設定授權碼(勿掉坑裡) 1.座標 <dependency> <groupId>javax.mail</groupId> <artifactId&
centos-sendmail&mail傳送郵件
一、安裝: 安裝sendmail: yum -y install sendmail systemctl start sendmail 安裝mailx: yum install -y mailx 二、傳送: 通過檔案內容傳送:
Linux實用技巧——mail傳送郵件命令以及中文亂碼解決
文章目錄 0 前言及準備 1 mailx安裝及配置 1.1 安裝 1.2 編輯配置檔案 2 傳送郵件 2.1 無正文郵件 2.2 有正文郵件 3 郵件中文亂碼問題解決
Java mail 傳送郵件 主題(標題)亂碼
最近開發遇到Javamail 傳送郵件標題亂碼問題,騰訊、網易郵箱不會亂碼,阿里郵箱 標題則會亂碼。解決辦法: String subject = MimeUtility.encodeWord(mailEntity.getMailSubject(), "UTF-8", "Q");
Java.Mail 傳送郵件工具類
1.首先確保傳送人的郵箱 跟 接收人的郵箱 的smtp協議開著. ------》可以上郵箱設定裡面開啟. 這裡使用的QQ郵箱 我們可以在郵箱幫助中找到QQ郵箱的pop3跟smtp伺服器地址已經開放的相應埠 一般是465,或者是587 2.極其重要一點
Javax.mail 傳送郵件異常
一、執行過程丟擲異常 1、Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream 原因:此異常多出現在J2EE版本的郵件服務中,因為J2EE原
java mail 傳送郵件
程式碼 package test.smtp; import javax.mail.Authenticator; import javax.mail.PasswordAuthentication; import javax.mail.Session; import java
Java Mail 傳送郵件126、163 、QQ
下面是傳送的程式碼(可測試) //1、創 建 連 接 對 象,連 接 到 郵 箱 服 務 器 Properties props = new Properties(); //開 啟 debug 調 試 props.setProperty("mail.
linux學習-mail傳送郵件(mail不能發郵件)
主機:centos 7 , 安裝sendmail,啟動sendmail,一般就可以了,但是有些同學為什麼不行,就是啟不動出現如下的情況!那現在如何解決。 yum install sendmailsystemctl start sendmail.service system
System.Net.Mail 傳送郵件
主要是用到了System.Web.Mail名稱空間,用到了此空間的三個類,分別是: ●MailMessage類,用於構造電子郵件 ●MailAttachment類,用於構造電子郵件附件 ●SmtpMail類,用於傳送電子郵件及其附件 1、MailMessage類構造電子郵件 此類主要有以下屬性和方法 ★F
Linux——使用mail傳送郵件給外部郵箱
相信大家都用過電子郵箱,例如網易163、騰訊QQ、Gmail等等。 在上一篇部落格裡小編剖析了crond&crontab(部落格連結http://blog.csdn.net/enchanting_/article/details/73752291),然
[python3.6 flask web學習]使用Flask-Mail傳送郵件
首先進入虛擬環境安裝flask-mail擴充套件模組 pip install flask-mail 傳送郵件需要配置傳送郵件的伺服器。flask-mail固定的配置變數名如下 在macos或者linux作業系統中使用export命令匯入環境變數 export MAIL_
linux中用命令mail傳送郵件
把文字資訊作為郵件內容傳送給[email protected] cat a.txt|mail -s hello [email protected] 把a.txt的內容作為輸出,給mail命令傳送,-s代表郵件標題,[email protecte
Java使用javax.mail傳送郵件
這裡使用maven專案進行開發 1.首先pom中載入jar <dependency> <groupId>com.sun.mail</groupId> <artifactId>javax.mail</ar
centos 7 rhel7怎麼用mail傳送郵件 到163 外部郵箱
centos7種自帶 mail,不用再安裝其他軟體 1.在mail.rc下配置檔案追加以下內容, vim /etc/mail.rc #163發郵件配置 set from=***@163.com # ***@163.com 是自己傳送方的郵箱 set smtp=smt
Java mail傳送郵件示例
package com.zhangxueliang.demo; import java.util.*; import javax.mail.*; import javax.mail.Message.R
使用Flask-Mail傳送郵件
簡介 在WEB開發時,我們常常會使用到傳送郵件的功能,註冊時或者更換密碼時,需要驗證郵箱,在flask的擴充套件中有Flask-mai來幫助完成這一功能 配置 flask-mail傳送郵件需要你提供你的郵箱賬號和密碼。某些配置是傳送郵箱所必須的·。大部
JAVA MAIL傳送郵件例項
專案用到一需求,完成特定任務後需要自動發郵件給客戶,看了下javamail比較簡單...不囉嗦,你懂的,然後就開始寫寫個簡單的入門,先百度找到 mail.jar ,commons-email-X.X.jar ,activation.jar 這三個jar,放進專案裡 先寫
Java使用javax.mail傳送郵件 解決收件人、發件人名字亂碼問題
/*** 格式化 Name <[email protected]> 的地址* @param name 名字* @param email Email地址* @return 格式化的地址*/public static String formatAddres
Laravel 5.4 使用 Mail 傳送郵件獲取驗證碼功能(使用的配置郵箱為126郵箱)
1 <?php 2 3 namespace App\Modules\Liveapi\Http\Controllers\Personnel; 4 5 use App\Modules\Liveapi\Http\Controllers\Controller; 6 use Illuminate