1. 程式人生 > >傳送郵件send email

傳送郵件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