PHPMailer の AddEmbeddedImage で空メールが返される
P粉702946921
P粉702946921 2024-03-28 13:39:46
0
1
323

PHPMailer を使用してインライン画像を取得するのに問題があります。次の行がない場合 (つまり、コメントアウトした場合)

リーリー ###良い結果。再度追加すると空のメールが届きます(Outlook と Gmail を試しました)。動作していることを確認するために「$success=」を追加しました。

リーリー

これは画面出力です:

写真: ../images/Logo.jpg,ロゴ,ロゴ.jpg,,,インライン

写真: ../podbanks/images/XX.jpg,XX,XX.jpg,,,inline


メール: オブジェクト(PHPMailer\PHPMailer\PHPMailer)#1 (71) { ["優先度"]=> NULL ["CharSet"]=> 文字列(10) "iso-8859-1" ["ContentType"]=> 文字列(9) "text/html" ["エンコーディング"]=> 文字列(4) "8ビット" ["エラー情報"]=> 文字列(0) "" ["送信者"]=> 文字列(18) "admin@example.com" ["送信者名"]=> 文字列(14) "管理者の例"["送信者"]=> string(18)"admin@example.com" ["件名"]=> string(27) "これがデフォルトのテーマです" ["本文"]=> string(215) "これはデフォルトのテキストを含む SendEmail からのテストです メッセージ本文に。画像もあります..." ["AltBody"]=> string(0) "" ["Ical"]=> 文字列(0) "" ["MIMEBody":protected]=> 文字列(0) "" ["MIMEHeader":protected]=> string(0) "" ["mailHeader":protected]=> string(0) "" ["WordWrap"]=> int(0) ["Mailer"]=> string(4) "smtp" ["Sendmail"]=> string(18) "/usr/sbin/sendmail" ["UseSendmailOptions"]=> bool(true) ["confirmReadingTo"]=> string(0) "" ["ホスト名"]=> 文字列(0) "" ["メッセージID"]=> 文字列(0) "" ["メッセージ日付"]=> 文字列(0) "" ["ホスト"]=> 文字列(14) "smtp.gmail.com" ["ポート"]=> int(587) ["Helo"]=> 文字列(0) "" ["SMTPSecure"]=> 文字列(3) "tls" ["SMTPAutoTLS"]=> bool(true) ["SMTPAuth"]=> bool(true) ["SMTPOptions"]=> 配列(0) { } ["ユーザー名"]=> 文字列(22) "examplemail@gmail.com" ["パスワード"]=> 文字列(16) "shotlzacfvdubehm" ["AuthType"]=> String(0) "" ["oauth":protected]=> NULL ["タイムアウト"]=> int(300) ["SMTPDebug"]=> int(0) ["Debugoutput"]=> string(4) "html" ["SMTPKeepAlive"]=> bool(false) ["SingleTo"]=> bool(false) ["SingleToArray":protected]=> array(0) { } ["do_verp"]=> bool(false) ["AllowEmpty"]=> bool(false) ["DKIM_selector"]=> string(0) "" ["DKIM_identity"]=>string(0) "" ["DKIM_passphrase"]=>string(0) "" ["DKIM_domain"]=> 文字列(0) "" ["DKIM_private"]=> 文字列(0) "" ["DKIM_private_string"]=> 文字列(0) "" ["アクション関数"]=> 文字列(0) "" ["XMailer"]=> String(0) "" ["smtp":protected]=> NULL ["to":protected]=> 配列(2) { [0]=> 配列(2) { [0]=> 文字列(19) "aa@gmail.com" 1=> 文字列(10) "AA" } 1=> 配列(2) { [0]=> 文字列(15) "aa@example.com" 1=> 文字列(13) "A/example" } } ["cc":protected]=> 配列(0) { } ["bcc":protected]=> 配列(0) { } ["ReplyTo":protected]=> 配列(1) { ["admin@example.com"]=> 配列(2) { [0]=> 文字列(18) "admin@example.com" 1=> 文字列(0) "" } } ["all_recipients":protected]=> array(2) { ["aa@gmail.com"]=> bool(true) ["ag@example.com"]=> bool(true) } ["受信者キュー":protected]=> 配列(0) { } ["ReplyToQueue":protected]=> array(0) { } ["attachment":protected]=> 配列(2) { [0]=> 配列(8) { [0]=> 文字列(31) "../images/clients/Logo.jpg" 1=> string(13) "Logo.jpg" 2=> 文字列(13) "ロゴ.jpg" [3]=>文字列(0) "" [4]=>文字列(10) "画像/jpeg" [5]=> bool(false) [6]=> 文字列(6) "インライン" [7]=> 文字列(9) "ロゴ" }1=> 配列(8) { [0]=> 文字列(35) "../images/XX.jpg" 1=> 文字列(16) "XX.jpg" 2=>文字列(16) "XX.jpg" [3]=>文字列(0) "" [4]=>文字列(10) "image/jpeg" [5]=> bool(false) [6]=> string(6) "inline" [7]=>; string(3) "XX" } } ["CustomHeader":protected]=> array(0) { } ["lastMessageID":protected]=> string(0) "" ["message_type":protected]=> string(0) "" ["boundary":protected]=> array(0) { } ["言語": protected]=> array(0) { } ["error_count":protected]=> int(0) ["sign_cert_file":protected]=> 文字列(0) "" ["sign_key_file":protected]=> 文字列(0) "" ["sign_extracerts_file": protected] => string(0) "" ["sign_key_pass": protected] = > string(0) "" ["例外": protected] = > bool(false) ["uniqueid":protected]=> string(0) "" } メッセージが送信されました。

包括的なドキュメントも見つかりませんでした。GitHub: 3731 でも見つかりませんでした。私が手に入れた中で一番近いのはこれでした。しかし、3 番目のパラメータが正確に何をしているのかはまだわかりません。名前を上書きしますか?なぜ?どのエンコーディングを使用すればよいですか (Base64 を試しましたが、両方とも空白のままにしました)? 「インライン」処理以外にどのようなオプションがありますか?等...###

P粉702946921
P粉702946921

全員に返信(1)
P粉164942791

まず第一に、何年もライブラリに含まれていないファイル (オートローダー) を参照しているため、古いバージョンの PHPMailer を使用しているようです。更新してください。

あなたのコードは非常に古い例に基づいているようです。 Mailer を自分で設定しないでください。isSMTP() がこれを行います。

ディスク上のファイルに受信者に公開したくない別の名前が付いている場合は、その名前をオーバーライドする必要がある場合があります。たとえば、ローカルに logo-123456.png があり、 logo.png として追加します。

画像はバイナリである傾向があり、電子メールで安全ではないため、ほとんどの場合、

エンコードは base64 である必要があるため、デフォルトのままにしておきます。

MIME タイプはファイル拡張子と一致する必要があるため、これも無視できます (PHPMailer が自動的に設定します)。 拡張子と一致しない MIME タイプを設定する特別な理由がない限り、 > コンテンツと一致します。

$disposition RFC2183。埋め込み画像にインライン以外のものを使用するのはあまり意味がないので、これもデフォルトのままにしておく必要があります。このオプションが存在するのは、RFC に存在する必要があると記載されているためです。

これらすべての結論として、実際に指定する必要があるのは、ファイルへのパスと cid だけです。

SMTP ログを表示すると (SMTPDebug = 2 に設定)、メッセージに何が起こっているかが正確に表示されるため、役立つ場合があります。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート