于程序員來說,項目中郵件發送是常用的一個功能, 我在這不講源碼,只講如何能快速地實現.
phpMailer 是一個非常強大的 php發送郵件類,可以設定發送郵件地址、回復地址、郵件主題、html網頁,上傳附件,并且使用起來非常方便。
phpMailer 的特點:
phpmailer 安裝或者下載方式:
從 github 上下載: https://github.com/PHPMailer/PHPMailer/
就這三個文件
大家實在下載不來的可以直接找我要,沒關系的
php開啟socket和openssl擴展,這種錯誤到時候解決就行
到這一步,我們就可以把這個壓縮包解壓到我們的項目中了,對于php來講,如果我們用了框架,比如think PHP, 那我們把他放到extend目錄下,如下圖:
think PHP
調用時用如下:
如果沒用框架,那就放到公共的三方引用目錄里面或直接就放到你當前php文件的同級目錄下,沒什么關系,引用路徑寫對就行,如下圖:
調用時如下:
到這一步相信大家都沒什么問題,下面重點談談代碼層面的問題:
發送之前需要擁有自己的郵件服務器,測試的時候其實用自己申請的免費郵箱最方便了,不需要自己再搭建服務器了,可能要配置郵箱的SMTP服務,大部分公共郵箱(163、qq等)為了安全默認是關閉的。
網易郵箱配置如下圖:
QQ 郵箱相關配置如下圖:
我們調試的時候一般都是用免費的郵件服務器,QQ或163, 用QQ 郵箱時,大家容易忽略一個問題,那就是QQ郵箱走465端口,ssl協議,所以我們如下配置:
注意一點, 密碼為單獨的授權碼,不是你的郵箱密碼,有人卡在這了,哈哈
如果用別的郵箱,可以走25端口,但這有一點特別坑,就是阿里云默認25端口是關的,所以沒辦法,要么不用25端口,要么就是向阿里云申請25端口,要么就是換服務器供應商,如IDC等等,
用25端口就不用ssl協議了,
具體代碼就是這一條寫不寫的區別.
還有就是同時發送多人和多張附件的問題:
發送多人,處理參數,循環
發送附件,處理參數,循環
實在是沒什么好說的,就是附件路徑要直接指向你的二進制文件,相對路徑和絕對路徑都行,但不是網圖鏈接或三方圖片服務器鏈接,比如七牛云和阿里云oss,這種只能先下載到本地或服務器才行,注意個別下載授權問題,你懂的
到這一步差不多了,直接放代碼:
/**
* 發送郵件(重構/支持附件)
*/
//參數有接收郵箱,可單人,可多人, 字符串和數組都行,看你
//主題,這不用多說
//內容, 可html,自動識別
//附件,上面已經說過注意事項
//三方包里面不用做任何修改
public static function send_email($sendTo, $titleName, $content, $file_list = []) {
$email = array(
'charset' => 'UTF-8', //字符編碼
'host' => 'smtp.leju.com', //企業郵局域名
'port' => 25, //端口
'username' => '', //郵件發送人
'password' => '', //密碼
);
require_once 'Phpmailer/phpmailer.php';
$mail = new PHPMailer(); //實例化
//附件
if (!empty($file_list)) {
foreach ($file_list as $key => $value) {
$mail->AddAttachment($value); // 添加附件
}
}
$titleName = $titleName;
// 使用SMTP方式發送
$mail->IsSMTP();
// 設置郵件的字符編碼
$mail->CharSet = $email['charset'];
// 企業郵局域名
$mail->Host = $email['host'];
$mail->Port = $email['port'];
// 啟用SMTP驗證功能
$mail->SMTPAuth = true;
//郵件發送人的用戶名(請填寫完整的email地址)
$mail->Username = $email['username'];
// 郵件發送人的 密碼 (授權碼)
$mail->Password = $email['password']; //修改為自己的授權碼
//郵件發送者email地址
$mail->From = $email['username'];
//發送郵件人的標題
$mail->FromName = '';
//做一下處理, 可以多個收件人,也可以一個
//收件人地址,可以替換成任何想要接收郵件的email信箱,格式是AddAddress("收件人email","收件人姓名")
if (!empty($sendTo)) {
$sendTo = explode(",", $sendTo);
foreach ($sendTo as $k => $v) {
$mail->AddAddress($v, substr($v, 0, strpos($v, '@')));
}
}
//回復的地址
$mail->AddReplyTo($email['username'], "");
//set email format to HTML //是否使用HTML格式
$mail->IsHTML(true);
//郵件標題
$mail->Subject = $titleName;
//郵件內容
$mail->Body = $content;
//附加信息,可以省略
$mail->AltBody = '';
if (!$mail->Send()) {
$mail_return_arr['code'] = false;
$str = "郵件發送失敗.
";
$str .= "錯誤原因: " . $mail->ErrorInfo;
$mail_return_arr['info'] = $str;
} else {
$mail_return_arr['code'] = true;
$str = "郵件發送成功";
$mail_return_arr['info'] = $str;
}
return $mail_return_arr;
}
到這一步,大家可以自己進行測試了,有問題可以留言,一般常見的問題我都可以為大家解答,或發我郵箱lnmp171@163.com
、前言
Spring Email 抽象的核心是 MailSender 接口,MailSender 的實現能夠把 Email 發送給郵件服務器,由郵件服務器實現郵件發送的功能。
Spring 自帶了一個 MailSender 的實現 JavaMailSenderImpl,它會使用 JavaMail API 來發送 Email。Spring 或 SpringBoot 應用在發送 Email 之前,我們必須要 JavaMailSenderImpl 裝配為 Spring應用上下文的一個 bean。
回到頂部
二、配置
1、pom.xml
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>
2、application.yml
如果想學習Java工程化、高性能及分布式、深入淺出。微服務、Spring,MyBatis,Netty源碼分析的朋友可以加我的Java高級交流:854630135,群里有阿里大牛直播講解技術,以及Java大型互聯網技術的視頻免費分享給大家。
知道mac郵件客戶端哪個好用?不要擔心,這里為大家推薦Airmail Mac版,你可以登錄iCloud、Gmail、Yahoo、Outlook、Google App等賬號,Airmail 5 for mac中文版支持保留單個或多個帳戶,快速切換賬號,輕松收發郵件,非常便捷,需要mac郵件客戶端的朋友趕緊試試airmail mac版吧!
Airmail for mac官方介紹
Airmail是一個新的郵件客戶端,具有快速的***能和直觀的交互。它支持iCloud?,MS Exchange,Gmail?,Google?應用程序,IMAP,POP3,Yahoo!?,AOL?,Outlook.com?和Live.com?。
無論您使用單個帳戶還是多個帳戶,Airmail都是從頭開始設計的,可為您提供一致的體驗,并提供快速,現代且易于使用的界面。Airmail很干凈,可以讓您不間斷地收到電子郵件。這是你想要的郵件客戶端,但直到現在還沒有找到。
我們通過Airmail將可用***和功能提升到了新的水平。Airmail擁有漂亮的設計,并為所有主要的電子郵件服務提供支持。在閃存中切換帳戶,輕松地將您的電子郵件轉換為其他應用程序中的任務或備注,并在幾秒鐘內快速回復收到的消息。電子郵件從未如此簡單和富有成效。
https://mac.orsoon.com/Mac/164236.html?id=MTY4MTYyJl8mMjIwLjE4Ni41Mi4yNw%3D%3D
airmail mac版功能特點
記錄:
- 統一收件箱
- 自定義SMTP別名
- Exchange、iCloud?、Gmail?、IMAP、POP3、Google? Apps、Yahoo!?、AOL?、Outlook.com?、Live.com?
- 本地帳戶
- 從Apple Mail、MBOX存檔、EML、EMLX、Airmail 1.x導入
交互:
- 快速回復
- 撤消歷史
- 離線***作
- 在不同郵箱間移動郵件
- 交互聲音
- 多點觸控手勢
- Exchange會議邀請
快捷鍵:
- Gmail快捷鍵
- 自定義全局快捷鍵
- Quick Label、移動、標簽和存檔
- 快速文件夾選擇
附件:
- 拖放
- Quick Look預覽
- Google Drive、Dropbox、CloudApp、Box、Onedrive、Droplr、FTP
- Inline圖像附件
- Winmail.dat預覽
- VCalendar
對話:
- 按ID分組
- 按主題分組
- 時間倒序
- 屏蔽抄送對話
視覺:
- 多個視覺主題
- 最小和擴展模式
- 純文本渲染
通知:
- 按帳戶通知
- 通知中心支持
- 帶自定義***作的通知提醒
地址:
- Gmail、Exchange和OS X聯系人
- 聯系人群組
- 按地址過濾
- 開放目錄搜索
撰寫器:
- Google App目錄
- Exchange全局地址列表
- LDAP目錄
- Markdown、Html(模板的Html源代碼)和純文本。
- 每個帳戶的自定義設置
- 項目符號和編號列表。
發送:
- 自動抄送、密件抄送
- 等待***作
- 發送延遲
- 重定向
- 再次發送
- 退回
高級:
- 分屏支持
- 適用于Time Machine
- Deckles模式
- EML導入/導出
- 禁用GPU以延長電池壽命
- Applescript
- 活動監視器
- 數據檢測器
簽名:
- 多個賬戶簽名
- Markdown、富文本、Html源代碼和純文本。
- 在引用上方或下方簽名
搜索和過濾:
- 多個帳戶全局搜索
- 強大的實時過濾
- 郵件、日期、附件、對話排序…
- 顯示同一用戶的郵件
- 標記和過濾
文件夾、標簽:
- 嵌套文件夾
- 創建、刪除和編輯文件夾
- 由iCloud同步的自定義色彩
- 自定義文件夾映射
- 待辦事項、已完成、備忘錄
發送至:
- Omnifocus
- Fantastical
- Evernote
- Apple Reminder
- Calendar
- BusyCal
- Things
- 2To
- Wunderlist
- Todoist
***:
- 每個用戶自動加載遠程圖像,
- 禁用圖標檢測
*請認真填寫需求信息,我們會在24小時內與您取得聯系。