首頁 php教程 php手册 Claws Mail 不识别 PHPMailer 发送的附件

Claws Mail 不识别 PHPMailer 发送的附件

Jun 06, 2016 pm 08:09 PM
mail phpmailer 傳送 識別 附件

环境:Claws Mail 3.9.1, PHP 5.4.16, PHPMailer 5.2.6 c5e9f7873f 现象:PHPMailer 发送带附件的邮件,直接使用 AddAttachment() 方法 $mailer-AddAttachment$attach_file; 没有其他设置。Claws Mail 收到信以后,查看邮件内容为空白, 附件栏显示: messag

环境:Claws Mail 3.9.1, PHP 5.4.16, PHPMailer 5.2.6 c5e9f7873f

现象:PHPMailer 发送带附件的邮件,直接使用 AddAttachment() 方法

$mailer->AddAttachment($attach_file);
登入後複製

没有其他设置。Claws Mail 收到信以后,查看邮件内容为空白, 附件栏显示:

message/rfc822
    multipart/mixed
登入後複製

以下就是空白了。 而能够正常识别附件的邮件,附件栏内容一般为:

message/rfc822
    multipart/mixed
        text/plain
        text/html   (这个是附件的 mime 类型)
登入後複製

gmail 和 mutt 中识别这样的邮件是正常的。

分析:通过对比正常和不正常的邮件原始码, 发现不正常邮件在声明内容是分节之后,多了一句传输编码声明,比如:

Content-Type: multipart/mixed;
    boundary="b1_95a848b14cb4385965320b915d5829dd"
Content-Transfer-Encoding: base64
登入後複製

最后的 Content-Transfer-Encoding 就是比正常邮件多的一行。

由于邮件原始码的这个部分,只是用来声明后续邮件是多个部分组成, 并定义了每个部分的辨识边界 boundary,并没有实际的内容, 所以应当是不需要声明编码类型的。在 PHPMailer 中相关代码为:

  public function GetMailMIME() {
    $result = '';
    switch($this->message_type) {
      case 'inline':
        $result .= $this->HeaderLine('Content-Type', 'multipart/related;');
        $result .= $this->TextLine("\tboundary=\"" . $this->boundary[1].'"');
        break;
      case 'attach':
      case 'inline_attach':
      case 'alt_attach':
      case 'alt_inline_attach':
        $result .= $this->HeaderLine('Content-Type', 'multipart/mixed;');
        $result .= $this->TextLine("\tboundary=\"" . $this->boundary[1].'"');
        break;
      case 'alt':
      case 'alt_inline':
        $result .= $this->HeaderLine('Content-Type', 'multipart/alternative;');
        $result .= $this->TextLine("\tboundary=\"" . $this->boundary[1].'"');
        break;
      default:
        // Catches case 'plain': and case '':
        $result .= $this->TextLine('Content-Type: '.$this->ContentType.'; charset='.$this->CharSet);
        break;
    }
    //RFC1341 part 5 says 7bit is assumed if not specified
    if ($this->Encoding != '7bit') {
      $result .= $this->HeaderLine('Content-Transfer-Encoding', $this->Encoding);
    }
登入後複製

特意加上了这个申明,因为按照 RFC1341,7bit 编码类型是默认的。

解决: 或许问题是出在 Claws Mail 上,但我暂时只能修改 PHPMailer 来适应这个问题了。 上面的问题弄清楚之后,在 multipart 后面不添加传输编码声明即可:

    //RFC1341 part 5 says 7bit is assumed if not specified
    // Not after multipart/mixed, claws-mail will not recoginize attachment
    if (($this->Encoding != '7bit') && (!in_array($this->message_type, array(
        'attach',
        'inline_attach',
        'alt_attach',
        'alt_inline_attach',
    )))) {
      $result .= $this->HeaderLine('Content-Transfer-Encoding', $this->Encoding);
    }
登入後複製

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1318
25
PHP教程
1268
29
C# 教程
1248
24
PHP使用PHPMailer傳送多人郵件的方法和步驟 PHP使用PHPMailer傳送多人郵件的方法和步驟 May 22, 2023 pm 06:10 PM

在Web應用程式中,往往需要將郵件一次發送給多個收件者。 PHP是一種很流行的Web開發語言,而PHPMailer是一種常見的發送郵件的PHP類別庫。 PHPMailer提供了豐富的接口,使得在PHP應用程式中發送郵件變得更加方便和易於使用。在本篇文章中,我們將介紹如何使用PHPMailer向多個收件者傳送郵件的方法和步驟。下載PHPMailer首先需要在官網(

抖音如何發給別人文件?上發給別人文件怎麼刪除? 抖音如何發給別人文件?上發給別人文件怎麼刪除? Mar 22, 2024 am 08:30 AM

在抖音上,使用者不僅可以分享自己的生活點滴和才藝,還可以和其他使用者互動交流。在這個過程中,有時候我們需要向其他用戶發送文件,例如圖片、影片等。那麼,在抖音上如何發給別人文件呢?一、抖音上如何發給別人文件? 1.開啟抖音,進入你想要傳送檔案的聊天介面。 2.點選聊天介面中的「+」號,選擇「檔案」。 3.在檔案選項中,你可以選擇傳送圖片、影片、音訊等檔案。選擇你想要發送的文件後,點擊「發送」。 4.等待對方接受你的文件,一旦對方接受,文件就會傳輸成功。二、抖音上發給別人檔案怎麼刪除? 1.打開抖音,進入你發送文

PHP開發實務:使用PHPMailer傳送郵件到MySQL資料庫的用戶 PHP開發實務:使用PHPMailer傳送郵件到MySQL資料庫的用戶 Aug 05, 2023 pm 06:21 PM

PHP開發實務:使用PHPMailer發送郵件到MySQL資料庫中的使用者引言:在現代互聯網建設中,郵件是一種重要的溝通工具。無論是用戶註冊、密碼重置,還是電子商務中的訂單確認,發送電子郵件都是必不可少的功能。本文將介紹如何使用PHPMailer來傳送電子郵件,並將郵件資訊儲存到MySQL資料庫中的使用者資訊表中。一、安裝PHPMailer庫PHPMailer是

如何使用PHP和PHPMAILER發送帶有內嵌圖片的HTML郵件? 如何使用PHP和PHPMAILER發送帶有內嵌圖片的HTML郵件? Jul 22, 2023 am 11:29 AM

如何使用PHP和PHPMAILER發送帶有內嵌圖片的HTML郵件? HTML郵件是一種更豐富和個人化的郵件形式,可以在郵件中插入圖片、連結和樣式。而內嵌圖片是指在HTML郵件中直接將圖片作為郵件的一部分發送,而不是透過附件方式發送。在PHP中,我們可以藉助PHPMAILER來傳送帶有內嵌圖片的HTML郵件。 PHPMAILER是一個功能強大的PHP郵件發送類別庫

WhatsApp技巧:發送高清照片和影片的方法 WhatsApp技巧:發送高清照片和影片的方法 Sep 10, 2023 am 10:13 AM

WhatsApp推出了一個新選項,允許用戶透過訊息平台以高解析度發送照片和影片。繼續閱讀以了解它是如何完成的。 WhatsApp發布了一個更新,允許iPhone和Android用戶以高分辨率發送照片和視頻,最終解決了該服務的低品質媒體共享限制。該選項稱為“高清品質”,意味著用戶可以以最小的壓縮發送更清晰的照片和影片。例如,在iPhone上捕獲的圖像現在可以以3024x4032分辨率發送,而不是以前的最大920x1280分辨率,而視頻可以以1280×718分辨率發送,而不是848×476分辨率。

PHP和PHPMAILER:如何實現郵件發送的防垃圾郵件功能? PHP和PHPMAILER:如何實現郵件發送的防垃圾郵件功能? Jul 22, 2023 am 11:46 AM

PHP和PHPMAILER:如何實現郵件發送的防垃圾郵件功能?引言:在網路時代,電子郵件已經成為了我們日常生活和工作中不可或缺的一部分。然而,隨著電子郵件的普及和使用,垃圾郵件問題日益嚴重,這給用戶帶來了許多困擾。為了解決這個問題,本文將介紹如何利用PHP和PHPMailer庫實現郵件發送的防垃圾郵件功能。一、了解垃圾郵件垃圾郵件(Spam),指的是那些未經

如何實現C++中的語音辨識與語音合成? 如何實現C++中的語音辨識與語音合成? Aug 26, 2023 pm 02:49 PM

如何實現C++中的語音辨識與語音合成?語音辨識和語音合成是當今人工智慧領域的熱門研究方向之一,它們在許多應用場景中扮演了重要的角色。本文將介紹如何使用C++實現基於百度AI開放平台的語音辨識和語音合成功能,並提供相關的程式碼範例。一、語音辨識語音辨識是將人說的語音轉換為文字的技術,在語音助理、智慧家庭、自動駕駛等領域有廣泛應用。以下是使用C++實現語音識

使用Java實現的人臉偵測與辨識技術 使用Java實現的人臉偵測與辨識技術 Jun 18, 2023 am 09:08 AM

隨著人工智慧技術的不斷發展,人臉偵測和辨識技術在日常生活中得到了越來越廣泛的應用。在各種場合,如人臉門禁系統、人臉支付系統、人臉搜尋引擎等等,人臉偵測和辨識技術都被廣泛應用。而Java作為一種廣泛使用的程式語言,也可以實現人臉偵測和辨識技術。本文將介紹如何使用Java實現人臉偵測與辨識技術。一、人臉偵測技術人臉偵測技術是指在影像或影片中偵測到人臉的技術。在J

See all articles