0

こんにちは私はここでチュートリアルといくつかの回答に従いましたが、それでもテストとしてGmailに添付ファイル付きのメールを送信しようとすると機能しません。Eメール:

アフリカンピグミーハリネズミクラブニュースレター

admin@africanpygmyhedgehogclub.co.uk via moth.xssl.net

「」

コンテンツタイプ:text / html;

アフリカンピグミーハリネズミクラブニュースレター

こんにちは、これはテストメッセージです--1575d7e57c4ae2d9bdd29f847d8f48ea

コンテンツタイプ:image / jpeg; 名前= "を/ tmp / php7LfGKW" コンテンツ転送エンコード:base64でコンテンツディスポジション:添付ファイル/ 9J / 4AAQSkZJRgABAgEASABIAAD / 4RNGRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUA AAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAMAAAExAAIAAAAUAAAAcgEyAAIAAAAUAAAAhodp AAQAAAABAAAAnAAAAMgAAAAcAAAAAQAAABwAAAABQWRvYmUgUGhvdG9zaG9wIDcuMAAyMDA5OjA4 OjA4IDIxOjE1OjA5AAAAAAOgAQADAAAAAf // AACgAgAEAAAAAQAAAligAwAEAAAAAQAAAdAAAAAA AAAABgEDAAMAAAABAAYAAAEaAAUAAAABAAABFgEbAAUAAAABAAABHgEoAAMAAAABAAIAAAIBAAQA AAABAAABJgICAAQAAAABAAASGAAAAAAAAABIAAAAAQAAAEgAAAAB / 9J / 4AAQSkZJRgABAgEASABI AAD / 7QAMQWRvYmVfQ00AAv / uAA5BZG9iZQBkgAAAAAH / 2wCEAAwICAgJCAwJCQwRCwoLERUPDAwP FRgTExUTExgRDAwMDAwMEQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBDQsLDQ4NEA4OEBQO ....

私のコード:

    if(isset($_POST['send_newsletter']))
    {
    $newsletter->store_form_values($_POST);
        $emails = explode(',', $newsletter->newsletter_emails);
    $file = $_FILES;

    $send_email = $newsletter->email_newsletter($emails, $file);

        echo $send_email;
    }

    public function email_newsletter($emails, $file)
    {
        //email address from
    $from = 'admin@africanpygmyhedgehogclub.co.uk';
    //subject
    $subject = "African Pygmy Hedgehog Club News Letter";

    $random_hash = "--" .  md5(date('r', time())) . "\r\n\n";
    $boundry_last = $random_hash;

    //turn emails array into csv
    $bcc = null;
    foreach($emails as $key => $value)
    {
        if($key == 'newsletter_sign_email')
        {
        $bcc .= $value . ',';
        } 
    }

    $bcc = rtrim($bcc);

    //headers
    $headers = 'From: ' . $from . "\r\n";
    $headers .= 'Reply-To: ' . $from . "\r\n";
    $headers .= 'BCC: ' . $bcc . "\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: multipart/mixed; boundary=\"PHP-mixed-" . $random_hash . "\"";

    //main message body
    $message = "Content-Type: text/html;" . "\r\n";
    $message .= "<h3>African Pygmy Hedgehog Club News Letter</h3>\n\n";
    $message .= $this->formatting($this->newsletter_content) . "\r\n";
    $message .= $random_hash;

    //attachment
    $file = $file['newsletter_attachment'];
    $filename = $file['tmp_name'];
    $filecontents = file_get_contents($filename);
    $message .= "Content-Type: " . $file['type'] . "; name=\"" . $filename . "\"" . "\r\n"; 
    $message .= "Content-Transfer-Encoding: base64" . "\r\n";  
    $message .= "Content-Disposition: attachment" . "\r\n";  
    $message .= chunk_split(base64_encode($filecontents)) . "\r\n";
    $message .= $boundry_last;

    if(mail($from, $subject, $message, $headers))
    {
    $result = "Successfully Sent News Letter";
    }
    else
    {
    $result = "Failed to Send New Letter, please try again!";
    }

    return $result;
    }
4

2 に答える 2

1

これを読んだ後、あなたはあなたの問題を解決することができるかもしれません:

http://webcheatsheet.com/php/send_email_text_html_attachment.php

それはかなり簡潔で要点です-それはかなり厄介ですが。

最善のオプションは、http://swiftmailer.org/を使用して、添付ファイルやその他の多くの機能もサポートする電子メールを送信することです。

于 2012-11-22T13:43:38.370 に答える
0

コードを実行しないと、メールメッセージと添付ファイルの境界が設定されていないように見えます。持っていないようです-

PHP-Mixed . . .
于 2012-11-22T13:47:39.120 に答える