傳送郵件send email
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Date;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.Message.RecipientType;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;
import org.springframework.stereotype.Component;
import com.alibaba.fastjson.JSONObject;
import java.util.List;
@Component
public class SendEmail {
public static void main(String[] args) {
SendEmail.sendEmail("郵件測試", new String[]{},"接收的郵箱", "主題");
}
/**
* 傳送郵件
* @param string 郵件內容 receiveEmail收件人郵箱
* @return
*/
public static String sendEmail(String string,String[] fileurl,String receiveEmail,String theme){
String myEmailAccount = getEmail("myEmailAccount");
String myEmailPassword = getEmail("myEmailPassword");
// 發件人郵箱的 SMTP 伺服器地址, 必須準確, 不同郵件地址不同, 一般格式為: smtp.xxx.com
// 網易163郵箱的 SMTP 伺服器地址為: smtp.163.com
String myEmailSMTPHost = "smtp.163.com";
// 收件人郵箱(替換為自己知道的有效郵箱)
String receiveMailAccount = receiveEmail;
// 1. 建立引數配置, 用於連線郵件伺服器的引數配置
Properties props = new Properties(); // 引數配置
props.setProperty("mail.transport.protocol", "smtp"); // 使用的協議(JavaMail規範要求)
props.setProperty("mail.smtp.host", myEmailSMTPHost); // 發件人的郵箱的 SMTP 伺服器地址
props.setProperty("mail.smtp.auth", "true"); // 需要請求認證
// 開啟 SSL 連線, 以及更詳細的傳送步驟請看上一篇: 基於 JavaMail 的 Java 郵件傳送:簡單郵件傳送
// 2. 根據配置建立會話物件, 用於和郵件伺服器互動
Session session = Session.getDefaultInstance(props);
session.setDebug(true); // 設定為debug模式, 可以檢視詳細的傳送 log
// 3. 建立一封郵件
MimeMessage message;
try {
message = createMimeMessage(session, myEmailAccount, receiveMailAccount,string,fileurl,theme);
// 也可以保持到本地檢視
// message.writeTo(file_out_put_stream);
// 4. 根據 Session 獲取郵件傳輸物件
Transport transport = session.getTransport();
// 5. 使用 郵箱賬號 和 密碼 連線郵件伺服器
// 這裡認證的郵箱必須與 message 中的發件人郵箱一致,否則報錯
transport.connect(myEmailAccount, myEmailPassword);
// 6. 傳送郵件, 發到所有的收件地址, message.getAllRecipients() 獲取到的是在建立郵件物件時新增的所有收件人, 抄送人, 密送人
transport.sendMessage(message, message.getAllRecipients());
// 7. 關閉連線
transport.close();
} catch (Exception e) {
e.printStackTrace();
}
return "d";
}
/**
* 建立一封複雜郵件(文字+圖片+附件)
*/
public static MimeMessage createMimeMessage(Session session, String sendMail, String receiveMail,String content,String[] fileurllist,String theme) throws Exception {
// 1. 建立郵件物件
MimeMessage message = new MimeMessage(session);
// 2. From: 發件人
message.setFrom(new InternetAddress(sendMail, "Java程式", "UTF-8"));
// 3. To: 收件人(可以增加多個收件人、抄送、密送)
// message.addRecipient(RecipientType.TO, new InternetAddress(receiveMail, "收件人暱稱收件人", "UTF-8"));
InternetAddress[] internetAddressTo = new InternetAddress().parse(receiveMail);
message.setRecipients(RecipientType.TO, internetAddressTo);
// 4. Subject: 郵件主題
message.setSubject(theme, "UTF-8");
/*
* 下面是郵件內容的建立:
*/
// 5. 建立圖片“節點”
/*
MimeBodyPart image = new MimeBodyPart();
File f=new File("C:/Users/Administrator/Desktop/1.png");
DataHandler dh = new DataHandler(new FileDataSource(f)); // 讀取本地檔案
image.setDataHandler(dh); // 將圖片資料新增到“節點”
image.setContentID("image_fairy_tail"); // 為“節點”設定一個唯一編號(在文字“節點”將引用該ID)
image.setFileName(MimeUtility.encodeText(f.getName()));//如果附件有中文通過轉換沒有問題了
*/
// 6. 建立文字“節點”
MimeBodyPart text = new MimeBodyPart();
//這裡新增圖片的方式是將整個圖片包含到郵件內容中, 實際上也可以以 http 連結的形式新增網路圖片
text.setContent(content, "text/html;charset=UTF-8");
/*
// 7. (文字+圖片)設定 文字 和 圖片 “節點”的關係(將 文字 和 圖片 “節點”合成一個混合“節點”)
MimeMultipart mm_text_image = new MimeMultipart();
mm_text_image.addBodyPart(text);
mm_text_image.addBodyPart(image);
mm_text_image.setSubType("related"); // 關聯關係
// 8. 將 文字+圖片 的混合“節點”封裝成一個普通“節點”
// 最終新增到郵件的 Content 是由多個 BodyPart 組成的 Multipart, 所以我們需要的是 BodyPart,
// 上面的 mm_text_image 並非 BodyPart, 所有要把 mm_text_image 封裝成一個 BodyPart
MimeBodyPart text_image = new MimeBodyPart();
text_image.setContent(mm_text_image);*/
// 9. 建立附件“節點”
// 設定附件的檔名(需要編碼)
// 10. 設定(文字+圖片)和 附件 的關係(合成一個大的混合“節點” / Multipart )
MimeMultipart mm = new MimeMultipart();
if(fileurllist.length>0){
for (String string : fileurllist) {//迴圈新增多個附件
MimeBodyPart attachment = new MimeBodyPart();
DataHandler dh2 = new DataHandler(new FileDataSource(string)); // 讀取本地檔案
attachment.setDataHandler(dh2); // 將附件資料新增到“節點”
attachment.setFileName(MimeUtility.encodeText(dh2.getName()));
mm.addBodyPart(attachment);
}
}
mm.addBodyPart(text);
mm.setSubType("mixed"); // 混合關係
// 11. 設定整個郵件的關係(將最終的混合“節點”作為郵件的內容新增到郵件物件)
message.setContent(mm);
// 12. 設定發件時間
message.setSentDate(new Date());
// 13. 儲存上面的所有設定
message.saveChanges();
return message;
}
/**
* 獲取系統郵箱
* @param id
* @return
*/
public static String getEmail(String id){
BufferedReader reader = null;
String laststr = "";
String email = null;
try {
FileInputStream fileInputStream = new FileInputStream(
PctJsonUtil.class.getResource("/").getFile().toString() + "/email.json");
InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "UTF-8");
reader = new BufferedReader(inputStreamReader);
String tempString = null;
while ((tempString = reader.readLine()) != null) {
laststr += tempString;
}
JSONObject jsoncode = JSONObject.parseObject(laststr);
email = String.valueOf(jsoncode.get(id));
reader.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return email;
}
}
email.json:
{“EMAIL”:”[email protected]”,”myEmailAccount”:”[email protected]”,”myEmailPassword”:”666666”}
相關推薦
傳送郵件send email
import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.Inp
學以致用——使用VBA傳送郵件(Send Email with VBA)
第一次使用VBA自動傳送郵件,酷!示例程式碼:Sub 郵件傳送() Dim cm As New CDO.Message 'Set cm = CreateObject("CDO.Message") '建立
Android Send Email 傳送郵件
最近公司有個需求,需要在意見反饋模組中增加發送郵件功能,看了網上好多的例子都是用的HtmlEmail和我需求不大一樣因此重新寫了一版傳送郵件程式碼供大家分享。整理了個EmailUtils工具:1、傳送文字郵件 2、傳送附件郵件jar包:activation.jar addi
java利用commons-email.jar傳送郵件
這幾天寫了一個簡歷網站,因為簡歷下面有個聯絡我的功能,這個功能可以可以向郵箱傳送郵件,所以自己便開始學習部落格開始解決傳送郵件功能。 引入相關jar包 要用commos-email.jar實現傳送郵箱功能需要先匯入三個jar包: commos-email.jar
【SSH網上商城專案實戰25】使用java email給使用者傳送郵件
當用戶購買完商品後,我們應該向使用者傳送一封郵件,告訴他訂單已生成之類的資訊,郵箱地址是從使用者的基本資訊中獲取,好了,首先我們來看一下java中傳送郵件的方法。
Python3.5 email傳送郵件,包含txt、圖片、HTML、附件
直接套用程式碼即可 from email.mime.text import MIMEText from email.mime.image import MIMEImage from email.mime.base import MIMEBase from
用git send-email傳送patch
用 gmail 作為傳送伺服器。 為了用git send-email通過gmail伺服器傳送patch。首先編輯 ~/.gitconfig , 寫入你的賬號配置 [sendemail]smtpencryption = tlssmtpserver = smtp.gmail.comsmtpuser = [ema
git 怎麼用命令傳送patch補丁、send-email下載和配置
本文是在Ubunt 12.04環境下測試的。 1、安裝必要的軟體 # apt-get install git git-core git-email 2、配置send-email的環境,主要是設定本地email的客戶端,用msmtp vim ~/.msmtprc # default a
記common-email傳送郵件,使用qq郵箱伺服器
import org.apache.commons.mail.Email; import org.apache.commons.mail.HtmlEmail; import org.apache.commons.mail.SimpleEmail; import org.ap
Python_使用smtplib和email模組傳送郵件
SMTP (Simple Mail Transfer Protocol) 郵件傳送代理 (Mail Transfer Agent,MTA) 程式使用SMTP協議來發送電郵到接收者的郵件伺服器。SMTP協議只能用來發送郵件,不能用來接收郵件。大多數的郵件傳送伺服器 (Ou
用java開發Email工具之傳送郵件
作者:馮睿 本文介紹瞭如何利用Java的網路API來實現一個電子郵件工具程式。通常Email工具都是使用SMTP(簡單郵件傳輸協議, Simple Mail Transfer Protocol)來傳送郵件,使用POP3協議來接受電子郵件。在本文中只對這兩個協議作簡單介紹。
使用Apache commons email傳送郵件
今天研究了一下怎麼用java程式碼傳送郵件,用的是Apache的commons-email包。 據說這個包是對javamail進行了封裝,簡化了操作。 這裡講一下具體用法吧 一.首先你需要有郵箱賬號和一個授權碼。 需要進入到QQ郵箱或者是網易郵箱裡面去獲取。在郵箱的設定->賬戶裡面,開啟如
如何將炫酷的報表直接截圖傳送郵件——在Superset 0.37使用Schedule Email功能
![](https://img2020.cnblogs.com/blog/1089984/202009/1089984-20200928094542782-414900302.png) Superset的圖表是非常炫酷的,但是原來的版本只能在web端檢視,而最新的0.37版本,可以將圖表截圖直接傳送成郵件
利用 git format-patch 和 git send-email 把修改的 patch 文件發送給 ffmpeg-devel
stop pass format class num false rpo orm auth 1. 下載源碼git clone https://git.ffmpeg.org/ffmpeg.git 2. 設置 git 用戶的郵箱和姓名git config --global us
linux send email
echo report send port span ebo rep epo com function send_mail() { echo $1 | mail -s "Report daily onebox for wenda" [email protected]
javax.mail 傳送郵件(工具類)
前言:注意自己郵箱賬號的授權碼 傳送不成功,要設定授權碼(勿掉坑裡) 1.座標 <dependency> <groupId>javax.mail</groupId> <artifactId&
無後臺網站傳送郵件方法(formspree)
<!doctype html> <html> <head> <meta charset="utf-8"> <title>無後臺網站傳送郵件方法(formspree)開通黃金會員才能使用AJAX提交,否則只能使用form提交</titl
Linux系統使用mailx命令傳送郵件
一、環境核實以及準備。 在centos7系統中預設有安裝mailx命令進行系統郵件的傳送。如果沒有相關的命令可以自行通過yum安裝 #yum install mailx -y 使用#ss &nbs
telnet通過smtp傳送郵件
////////////////////////////////////CMD指令////////////////////////////////////////////// cmd telnet smtp.163.com 25 or &nb
註冊成功傳送郵件
前提:確認匯入了jar包:mail.jar *注:網易郵箱給網易郵箱發的較快。 MailUtils.java package com.pb.utils; import java.util.Properties; i