PHPMailer傳送中文名稱附件
轉帖請註明本文出自skypupil的部落格(http://blog.csdn.net/u011956441/article/details/44161587),請尊重他人的辛勤勞動成果,謝謝!
我的應用場景是:在一個網頁上當使用者輸入郵箱地址並點選“傳送郵件”按鈕後,呼叫sendMail.php向用戶傳送帶附件的郵件。
遇到的問題是:當附件的名稱是英文名時能正確傳送,但是當附件名是中文時,使用者郵箱就收不到附件。下面是我的解決方法:先上sendMail.php程式碼:
<?php header('Content-Type:text/html; charset=utf-8'); /*呼叫該php的頁面通過$.ajax的POST方法傳遞過來的引數*/ $toEmailAddress=$_POST['toEmailAddress']; /*PHPMailer引用檔案,版本號;5.2.9*/ require_once('PHPUtils/PHPMailer/class.phpmailer.php'); require_once('PHPUtils/PHPMailer/class.smtp.php'); /*新建PHPMailer例項*/ $mail = new PHPMailer(); //$mail->SMTPDebug = 4; // 設定除錯資訊顯示級別 $mail->CharSet = 'UTF-8'; //設定郵件編碼,預設ISO-8859-1,如果發中文此項必須設定為 UTF-8 $mail->isSMTP(); // 設定使用SMTP服務 $mail->SMTPAuth = true; // 啟用 SMTP 驗證功能 $mail->SMTPSecure = 'ssl'; // SMTP 安全協議 $mail->Host = 'smtp.gmail.com'; // SMTP 伺服器 $mail->Port = 465; // SMTP伺服器的埠號 $mail->Username = '
[email protected]'; // SMTP伺服器使用者名稱(你的郵箱賬號名) $mail->Password = 'password'; // SMTP伺服器密碼(你的郵箱登陸密碼) $mail->setFrom('[email protected]', 'yourName'); // 設定發件人地址和名稱 $mail->addReplyTo('[email protected]', 'yourName'); // 設定郵件回覆人地址和名稱 $mail->Subject = '標題'; // 設定郵件標題 $mail->AltBody = '為了檢視該郵件,請切換到支援 HTML 的郵件客戶端'; // 可選項,向下相容考慮 $mail->msgHTML('你好,這是來自gmail的郵件'); // 設定郵件內容 $mail->addAddress($toEmailAddress); // 收件人地址 //$mail->addAttachment('pdfs/測試.pdf'); // 新增附件 檔案路徑,傳送附件失敗 $mail->addAttachment(iconv('utf-8', 'gb2312', 'pdfs/測試.pdf'), '測試.pdf'); // 新增附件 引數1為檔案路徑,引數2為檔名(郵件附件的名稱,可以與實際傳送的本地檔名不同) if (!$mail->send()) { echo "傳送失敗:" . $mail->ErrorInfo; } else { echo "恭喜,郵件傳送成功!"; } ?>
上面程式碼中解決問題的關鍵是使用“$mail->AddAttachment(iconv('utf-8', 'gb2312', 'pdfs/測試.pdf'), '測試.pdf');”這行。
先來看兩個方法:
addAttachment--方法
出自:PHPMailer::addAttachment()
檔案:class.phpmailer.php。
說明:新增附件。
引數:路徑,名稱,編碼,型別。其中,路徑為必選,其它為可選
函式原型:addAttachment($path,$name
= '',$encoding = 'base64',$type = 'application/octet-stream'){}
iconv--方法
出自:PHP (>= 4.0.5)
函式原型:string iconv ( string $in_charset , string $out_charset , string $str )
說明:將字串 str 從 in_charset 轉換編碼到 out_charset。
瞭解了上面兩個方法後,就明白了PHPMailer之所以不能傳送中文名稱的附件,是因為PHPMailer不能正確讀取utf-8編碼的中文檔案路徑,只要將檔案路徑轉換成gb2312編碼後,就能正確傳送了。
最後,附上SMTP伺服器埠號地址:http://blog.wpjam.com/m/gmail-qmail-163mail-imap-smtp-pop3/
相關推薦
PHPMailer傳送中文名稱附件
轉帖請註明本文出自skypupil的部落格(http://blog.csdn.net/u011956441/article/details/44161587),請尊重他人的辛勤勞動成果,謝謝! 我的應用場景是:在一個網頁上當使用者輸入郵箱地址並點選“傳送郵件”按鈕後,呼叫s
phpmailer傳送郵件和附件
ps:鄙視那些複製別人文章並美其名曰“原創”的狗,鄙視那些騙C幣下載垃圾資源的垃圾廢物。本人分享所有東西 download:https://github.com/PHPMailer/PHPMailer/releases 自己引用的時候要注意namespace public f
[php]mail函式傳送郵件(正文+附件+中文)
<?php $from = "[email protected]"; $to = "[email protected], [email protected]"; $subject = "郵件主題"; $subject = "=?UTF-8
使用sendEmail成功傳送中文郵件
sendEmail -o message-charset=gbk -f [email protected] -t [email protected] -s smtp.qq.com:587 -xu [email protected] -xp password
問題:git處理中文名稱時候顯示為編碼形式(已解決)
問題描述: Untracked files: (use "git add <file>..." to include in what will be committed) static/README.md "\350\207\252\346\2
轉自: linux svn命令列無法拉取中文名稱的檔案
轉自: https://blog.csdn.net/shaohui/article/details/3996274#commentBox svn: Can't convert string from 'UTF-8' to&
java傳送郵件帶附件、格式、可以實現轉發、祕密轉發等操作
最近在研究java傳送郵件帶附件、格式、可以實現轉發、祕密轉發等操作的元件,下面把程式碼和大家共享下,本來想做資源共享的,但是下載就會消耗大家的積分,沒積分就沒得看了,想想還是算了,直接發出來了,個人知識一點點的研究,敬請大家指點 2010-12-14 package njfc.co
spring boot 郵件傳送(帶附件)
首先開啟QQ郵箱的POP.SMTP伺服器,獲取授權碼。 設定-->賬戶-->POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務 pom.xml需要載入三個jar,可以在這個網站裡下載:https://mvnrepository.com/
java傳送郵件新增附件-附件名有問題解決。
新增附件時為setFileName需要指定utf-8的編碼格式,否則解析不出來會隨機給一個類似下面名稱的附件名 tcmime.1882.2250.7267.bin 正確的set方式: MimeUtility.encodeText(file.getName(), "UTF-8"
PHPMailer傳送outlook日曆郵件踩過的坑
$mail=new PHPMailer(); $startTime = "2018-12-18 16:00"; $endTime = "2018-12-18 18:00"; $inviteName = "這是一封郵件測試";
SpringBoot傳送郵件(帶附件以及不帶附件)
1.QQ郵箱 首先登入QQ郵箱>>>登入成功後找到設定>>>然後找到郵箱設定>>>點選賬戶>>>找到POP3|SMTP服務>>>點選開啟(開啟需要驗證,驗證成功後會有一串授
springboot 傳送郵件+模板+附件
package com.example.demo;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.
python 傳送郵件 附帶附件
from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart import smtplib #建立一個帶附件的例項 msg = MIMEMultipart() #構造
Java實現按中文名稱排序
//定義排序函式 public static String[] getSortOfChinese(String[] a) { // Collator 類是用來執行區分語言環境這裡使用CHINA Comparator cmp = Collator.getInstance(java.util
java 傳送郵件 帶附件或者表格
package com.sub.utils; import javax.activation.DataHandler; import javax.activation.DataSource; import javax.activation.FileDataSource; import java
HttpServletResponse下載檔案(中文名稱下載)-------手動編碼實現下載
DownloadServlet: package com.yuming.servlet; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; impo
PHPMailer傳送郵件
使用PHP發郵件,需要PHPMailer類庫,今天記錄下使用PHPMailer的一些使用方法。 使用環境 0、版本不同,可能會導致解決方案行不通,故記錄使用環境。 1、Apache/2.4.33 (Win64) PHP/5.6.35 2、Thi
jquery正則表示式驗證糾正版(手機號、身份證號、中文名稱)
最新福利:領取阿里雲1000通用代金券 <script type="text/javascript"> // 驗證中文名稱 function isChinaName(name) { var pattern = /^[\u4E00-\u9FA5]{1,6}$/; retu
android 各版本對應的API(sdk) Level以及中文名稱
Android 1.0 2008年9月23日,釋出Android作業系統中的第一個正式版本:Android 1.0(Astro“鐵臂阿童木”)。全球第一臺Android裝置HTC Dream(G1)就是搭載Android 1.0作業系統,以下Android 1.0所擁有的特性功能: Android
MIDI演出控制協議之MIDI資料位元組-GM1音色標準-打擊樂器庫(帶樂器中文名稱)
/* General MIDI Level 1 打擊樂器對照表 在MIDI通道10上,下列每一種樂器都能發出一種獨特的打擊樂。GM1打擊樂 只包含下列這些樂器。只要支援GM標準就一定支援這些樂器。雖然一些廠商 為其MIDI產品增加了新的