記錄一個格式:發郵件時顯示郵件聯絡人名稱(暱稱)
一直在用javax.mail發郵件,但是我的郵件顯示的都是郵件地址,像其它服務郵箱,京東,淘寶之類的都顯示的是名稱。很奇怪。
百度之,網上沒有類似。
百度之好久,發現有人說是需要用固定的格式填充From屬性。
// 設定收件人,寄件人
String nick = javax.mail.internet.MimeUtility.encodeText("顯示名稱");
messageHelper.setFrom(new InternetAddress(nick + " <[email protected]>"));
messageHelper.setTo(toMail);
messageHelper.setSubject(subject);
這樣即可,前面的名稱就會正常顯示出來。
附發郵件的程式碼:
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.5.0-b01</version>
</dependency>
這是以前寫的程式碼,原始碼已經找不到的,只有jar還在,現反編譯出來,儲存下。
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
package myEmail;
import java.util.Properties;
public class MailSenderInfo {
private String mailServerHost;
private String mailServerPort = "25";
private String fromAddress;
private String toAddress;
private String userName;
private String password;
private boolean validate = false;
private String subject;
private String content;
private String[] attachFileNames;
public MailSenderInfo() {
}
public Properties getProperties() {
Properties p = new Properties();
p.put("mail.smtp.host", this.mailServerHost);
p.put("mail.smtp.port", this.mailServerPort);
p.put("mail.smtp.auth", this.validate?"true":"false");
return p;
}
public String getMailServerHost() {
return this.mailServerHost;
}
public void setMailServerHost(String mailServerHost) {
this.mailServerHost = mailServerHost;
}
public String getMailServerPort() {
return this.mailServerPort;
}
public void setMailServerPort(String mailServerPort) {
this.mailServerPort = mailServerPort;
}
public boolean isValidate() {
return this.validate;
}
public void setValidate(boolean validate) {
this.validate = validate;
}
public String[] getAttachFileNames() {
return this.attachFileNames;
}
public void setAttachFileNames(String[] fileNames) {
this.attachFileNames = fileNames;
}
public String getFromAddress() {
return this.fromAddress;
}
public void setFromAddress(String fromAddress) {
this.fromAddress = fromAddress;
}
public String getPassword() {
return this.password;
}
public void setPassword(String password) {
this.password = password;
}
public String getToAddress() {
return this.toAddress;
}
public void setToAddress(String toAddress) {
this.toAddress = toAddress;
}
public String getUserName() {
return this.userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getSubject() {
return this.subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getContent() {
return this.content;
}
public void setContent(String textContent) {
this.content = textContent;
}
}
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
package myEmail;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
public class MyAuthenticator extends Authenticator {
private String username;
private String password;
public MyAuthenticator(String username, String password) {
this.username = username;
this.password = password;
}
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(this.username, this.password);
}
String getUsername() {
return this.username;
}
public void setUsername(String username) {
this.username = username;
}
String getPassword() {
return this.password;
}
public void setPassword(String password) {
this.password = password;
}
}
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
package myEmail;
import java.util.Date;
import java.util.Properties;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.Message.RecipientType;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import myEmail.MailSenderInfo;
import myEmail.MyAuthenticator;
public class SimpleMailSender {
public SimpleMailSender() {
}
public boolean sendTextMail(MailSenderInfo mailInfo) {
MyAuthenticator authenticator = null;
Properties pro = mailInfo.getProperties();
if(mailInfo.isValidate()) {
authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());
}
Session sendMailSession = Session.getDefaultInstance(pro, authenticator);
try {
MimeMessage ex = new MimeMessage(sendMailSession);
InternetAddress from = new InternetAddress(mailInfo.getFromAddress());
ex.setFrom(from);
InternetAddress to = new InternetAddress(mailInfo.getToAddress());
ex.setRecipient(RecipientType.TO, to);
ex.setSubject(mailInfo.getSubject());
ex.setSentDate(new Date());
String mailContent = mailInfo.getContent();
ex.setText(mailContent);
Transport.send(ex);
return true;
} catch (MessagingException var9) {
var9.printStackTrace();
return false;
}
}
public boolean sendHtmlMail(MailSenderInfo mailInfo) {
MyAuthenticator authenticator = null;
Properties pro = mailInfo.getProperties();
if(mailInfo.isValidate()) {
authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());
}
Session sendMailSession = Session.getDefaultInstance(pro, authenticator);
try {
MimeMessage ex = new MimeMessage(sendMailSession);
InternetAddress from = new InternetAddress(mailInfo.getFromAddress());
ex.setFrom(from);
InternetAddress to = new InternetAddress(mailInfo.getToAddress());
ex.setRecipient(RecipientType.TO, to);
ex.setSubject(mailInfo.getSubject());
ex.setSentDate(new Date());
MimeMultipart mainPart = new MimeMultipart();
MimeBodyPart html = new MimeBodyPart();
html.setContent(mailInfo.getContent(), "text/html; charset=utf-8");
mainPart.addBodyPart(html);
ex.setContent(mainPart);
Transport.send(ex);
return true;
} catch (MessagingException var10) {
var10.printStackTrace();
return false;
}
}
}
package mail;
import myEmail.MailSenderInfo;
import myEmail.SimpleMailSender;
import java.io.UnsupportedEncodingException;
public class SendEmail {
public static void send(String email, String content) {
// 這個類主要是設定郵件
MailSenderInfo mailInfo = new MailSenderInfo();
mailInfo.setMailServerHost("smtp.163.com");
mailInfo.setMailServerPort("25");
mailInfo.setValidate(true);
mailInfo.setUserName("[email protected]");
mailInfo.setPassword("password");// 您的郵箱密碼
String nick = "";
try {
nick = javax.mail.internet.MimeUtility.encodeText("CSDN服務賬號");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
mailInfo.setFromAddress(nick + "<[email protected]>");
mailInfo.setToAddress(email);
mailInfo.setSubject("計算結果");
mailInfo.setContent(content + "\n此郵件為系統自動傳送,回覆無效!");
// 這個類主要來發送郵件
SimpleMailSender sms = new SimpleMailSender();
sms.sendTextMail(mailInfo);// 傳送文體格式
// sms.sendHtmlMail(mailInfo);// 傳送html格式
}
public static void main(String[] args){
String content="我是一封測試郵件";
send("[email protected]",content);
}
}
相關推薦
記錄一個格式:發郵件時顯示郵件聯絡人名稱(暱稱)
一直在用javax.mail發郵件,但是我的郵件顯示的都是郵件地址,像其它服務郵箱,京東,淘寶之類的都顯示的是名稱。很奇怪。 百度之,網上沒有類似。 百度之好久,發現有人說是需要用固定的格式填充From屬性。 // 設定收件人,寄件人 String n
記錄一個PHP安裝redis擴充套件時的問題
安裝過程:https://www.cnblogs.com/pengyunjing/p/8688320.html 由於我之前安裝過該擴充套件,重新安裝時沒有執行make clean命令,所以安裝好出現了下面的錯誤: PHP Warning: PHP Startup: Unable to load
記錄一個錯誤:COM程序外伺服器的啟動
在完成所有的程序外原始碼編輯後,生成了相應的.exe檔案。根據書上說“COM解決的辦法是維護一個被登記的類廠的內部表格,根據客戶請求的CLISD得到相應的類廠。若找不到相應類廠,COM將在登錄檔中查詢並啟動相應的EXE,此EXE可呼叫COM函式CoRegiste
一個嘗試:做正事時不看手機,少看手機
最近,發現自己總是在看手機,浪費了很多時間,決定努力在做事情(上課、作業、程式碼等)時不分心看手機。 開始: 2018年 11/5 玩手機時間很長。 11/6 開始記錄時間, 玩手機時間 約150 分鐘 11/7 玩手機 約70分鐘。 主要原因是上午一直在上實
利用Centos 7內建的 crontab 進行系統的定時關機 格式: * * * * * command 分 時 日 月 周 命令 1 2 3 #編輯定時任務: crontab -e
利用Centos 7內建的 crontab 進行系統的定時關機 格式: * * * * * command 分 時 日 月 周 命令123#編輯定時任務: crontab -e #檢
ffdshow神奇的功能:視訊播放時顯示運動向量和QP
FFDShow可以稱得上是全能的解碼、編碼器.最初FFDShow只是mpeg視訊解碼器,不過現在他能做到的遠不止於此.它能夠解碼的視訊格式已經遠遠超出了mpeg4的範圍,包括indeo video,WMV,mpeg2等等.同時,它也提供了豐富的加工處理選項,可以銳化畫面,調
ajax非同步請求關鍵字提示(適用於註冊使用者時顯示已註冊使用者,避免重複)
1.前端程式碼 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>staff_insert.html</title&
問題:git處理中文名稱時候顯示為編碼形式(已解決)
問題描述: Untracked files: (use "git add <file>..." to include in what will be committed) static/README.md "\350\207\252\346\2
Java虛擬機器(JVM原始碼):JDK10對Java虛擬機器執行時資料區的劃分(詳細圖解)
Java虛擬機器執行時資料區 為什麼要研究這個,因為JDK都已經發布到10了,必須要更新自己對Java虛擬機器新的認識。 一、執行時資料區的劃分 1.1 官方劃分 關於JDK10對執行時資料區的劃分,在官方文件說的非常清楚。 學習技術,一定要學會看第一手資料。 Ja
python自動化測試開發:當frame/iframe沒有可用的id或者name屬性時,多表單(frame/iframe)如何進行切換
在設計自動化測試指令碼時,經常會有多表單(frame/iframe)需要切換,否則無法定位到表單上的元素,在python中使用switch_to.frame()方法,具體用法如下 1、switch_to.frame()預設直接調取表單的id活name屬性。 示例: dr
java中傳送郵件,如何設定發件人名稱、暱稱
msg.setFrom (new InternetAddress ("[email protected]", "這裡是需要的暱稱", "UTF-8")); msg.setSubject (subject); msg.setText (content); msg.ad
使用者登入(三次機會)並且每次輸錯時顯示剩餘登入機會(用到字串格式化。)
i=0 username ='機智姐' password ='123' while i< 3: name =input('請輸入賬號: ') pwd =int (input('請輸入密碼: ')) if username == name and password ==pwd
foxmail郵件只能顯示郵件頭,不能顯示內容
@echo off pause echo 正在清理系統垃圾檔案,請稍等...... del /f /s /q %systemdrive%\*.tmp del /f /s /q %systemdrive%\*._mp del /f /s /q %systemdrive%\*.log del /f /
k-d tree演算法的研究(看這篇博文時,我主要的關注點是:特徵匹配時,剔除誤匹配點的方法)
先前寫了一篇文章《SIFT演算法研究》講了講SIFT特徵具體是如何檢測和描述的,其中也提到了SIFT常見的一個用途就是物體識別,物體識別的過程如下圖所示: 如上圖(a),我們先對待識別的物體的影象進行SIFT特徵點的檢測和特徵點的描述,然後得到了SIFT特徵點集合。接下來生成物體目標描述要做的就是
iOS 如何讓UITableView顯示時自動滾動到底部(不閃動)
最近在研究XMPP即時通訊,在從好友列表進入聊天頁面的時候需要UITableView(訊息列表)自動滾動到底部,如下所示: 剛開始試了兩種方法, 第一種是在viewDidAppear中設定tableView(scrollView)的contentOffs
Java高並發程序設計學習筆記(五):JDK並發包(各種同步控制工具的使用、並發容器及典型源碼分析(Hashmap等))
pin 指定 timeunit executors .sh 部分 現象 arr span 轉自:https://blog.csdn.net/dataiyangu/article/details/86491786#2__696 1. 各種同步控制工具的使用1.1. R
JavaScript設計模式:一、面向對象編程(第二節)
得到 調用 帶來 方式 get 特權 style 方法封裝 面向對象 一、封裝 面向對象編程思想其中的一個特點就是封裝,通俗的講法就是把需要的功能方向在一個對象裏。遺憾的是,對於JS這種解釋性的弱類型語言沒有經典強類型語言中那樣通過class等關鍵字實現類的封裝方法,j
ActiveMQ(19):Consumer高級特性之獨有消費者(Exclusive Consumer)
consumer高級特性之獨有消費者(exclusive consumer)一、簡介Queue中的消息是按照順序被分發到consumers的。然而,當你有多個consumers同時從相同的queue中提取消息時,你將失去這個保證。因為這些消息是被多個線程並發的處理。有的時候,保證消息按照順序處理是很重要的。如
ActiveMQ(20):Consumer高級特性之重新投遞(Redelivery Policy)
jms activemq 重新投遞 一、簡介ActiveMQ在接收消息的Client有以下幾種操作的時候,需要重新傳遞消息: 1:Client用了transactions,且在session中調用了rollback() 2:Client用了transactions,且在調用commit()之前關閉
JavaScript設計模式:一、面向對象編程(第三節)
設置 style 擁有 ray 進行 如果 eat gree 而在 一、繼承 js並沒有繼承這一個現有的機制,所以我們所說的繼承是通過JS本身的機制去實現的。 1、類式繼承 1 // 類式繼承 2 3 // 父類 4 function SuperClas