バージョン選択

フォーラム

メニュー

オンライン状況

79 人のユーザが現在オンラインです。 (66 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 79
もっと...

サイト内検索

質問 > 管理機能 > 送信エラーメールアドレスが送れない。

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
dotquery
投稿日時: 2018/8/26 12:05
対応状況: 開発中
新米
登録日: 2018/8/7
居住地:
投稿: 6
送信エラーメールアドレスが送れない。
■ 環境
EC-CUBE(3.0.16)
レンタルサーバー:エックスサーバー
DBサーバー:MySQL(5.7.16)
WEBサーバー:Apache,PHP(7.0.30)

送信エラーメールアドレスが送られないです。
送られてきてもスパムに入ったりします。
他の箇所もメールが送信されなくて↓の修正しました、同じ対応をしても、なぜかうまくいかなかったです。


◉ 試してみた事
/src/Eccube/Service/MailService.phpを編集して、色々試してみました。
setReturnPathのメールアドレスが、エラーの場合のメール返信先だと思っています。

■ 未編集の場合
->setReturnPath($this->BaseInfo->getEmail04())
・結果
エラーメッセージは出ない
スパムフォルダーに入るか、届かない

■ ヘッダー情報を配列で追加
実は前に他の箇所(Bcc送信)のメールも届かなかったので、
https://goo.gl/Wy4JxG
↑のサイトを参考にヘッダー情報のような?をコードを追加しました。
->setBcc($this->BaseInfo->getEmail02() => $this->BaseInfo->getShopName())

->setBcc(array($this->BaseInfo->getEmail02() => $this->BaseInfo->getShopName()))

同じ事をsetReturnPathにもヘッダー情報追加しました。
->setReturnPath(array($this->BaseInfo->getEmail04() => $this->BaseInfo->getShopName()))

・結果
正規表現エラー
ContextErrorException in PathHeader.php line 137:
Warning: preg_match() expects parameter 2 to be string, array given

■ ヘッダー情報を文字列で追加
正規表現のエラーに配列ではないといけないと怒られているようなので、文字列にしました。
->setReturnPath($this->BaseInfo->getEmail04() => $this->BaseInfo->getShopName())

・結果
シンタックスエラー
FatalThrowableError in MailService.php line 195:()←配列なしでヘッダー情報を追加した行
Parse error: syntax error, unexpected '=>' (T_DOUBLE_ARROW), expecting ',' or ')'

ご教授いただけると大変、助かります。

よろしくお願いいたします。
468
投稿日時: 2018/8/28 10:51
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: 送信エラー受付メールアドレスが送れない。
>送信エラー受付メールアドレスが送られないです。
送信先のメールアドレス存在しない場合などのエラーメールが戻ってこないという事でしょうか?

>setReturnPathのメールアドレスが、エラーの場合のメール返信先だと思っています。
認識に誤りはないと思います。
->setReturnPath()メソッドですが、
/vendor内のソースを確認すると、

interface Swift_Mime_Message にて、以下の記述がありますので、
引数には文字列しか設定できないと思います。
予想ですが、hogehoge <hogehoge@example.com>;のような形式には出来ないのではないでしょうか?

    /**
     * Set the return-path (bounce-detect) address.
     *
     * @param string $address
     */
    public function setReturnPath($address);


あと、エラーメールが返ってこない件ですが、
softbankやau(ユーザーが設定)は、エラーメールが返ってこない仕様だったかと思いますが、それが原因という事はないでしょうか?
返ってきたメールがスパムに設定されるのは、
受信サーバのスパムアサシン等が反応している、またはご利用のPCのウイルス対策ソフトが反応している可能性はないでしょうか?


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

dotquery
投稿日時: 2018/8/28 23:13
対応状況: −−−
新米
登録日: 2018/8/7
居住地:
投稿: 6
Re: 送信エラーメールアドレスが送れない。
468様

またまた、ご回答ありがとうございます。

タイトル変ですね、修正しました。

おっしゃる通り、存在しないメールアドレスなどエラーの時に送られるメールアドレスです。
softbankやauではなく、gmailです。

メールにはウィルスソフトは動かしてないです。
スパムに入っているときは↓のようにメッセージがメールの文章の上に書かれています。
---------------------------------------------------
This is the mail system at host hogehoge.xserver.jp.

I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.

For further assistance, please send mail to postmaster.

If you do so, please include this problem report. You can
delete your own text from the attached returned message.

The mail system

<存在しない宛先>: Host or domain name not found. Name service error for
name=存在しないメールドメイン名 type=A: Host not found
以下メールの本文
---------------------------------------------------

Bcc送信のsetBccも↑のようなメッセージつきでスパムが送信され他ので
対策として、setFromの書き方を真似して、配列でメールアドレスとショップ名(ヘッダー情報?)を入れました。
Bccは成功しました。

今回ご質問させていただいた、エラー送信用のsetReturnPathも同じ状態だったので、
同じ対策で配列でメールアドレスとショップ名を送ってあげれば治るかと思ったのですが、
文字列しか受け付けられないことと、配列以外でのメールアドレスとショップ名送信方法がわからなかった為、困ってしまっています。


何か思い当たる節がございましたら、ご助言お願いいたします。
わかりずらくて申し訳ないです。

よろしくお願いいたします。
468
投稿日時: 2018/8/31 12:21
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: 送信エラーメールアドレスが送れない。
setReturnPath()に文字列しかセットできないのは、
SwiftMailerの仕様かと思いますので、対応させるのは難しいかと思いますが、
もしかしたら、 ->setReturnPath('hoge@hoge.com <hogehoge>');
のように名称付きの文字列でセットすればいけるかもしれません。
名称に2バイト文字が入ってくるとなると、ややこしいかもしれませんが...


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

dotquery
投稿日時: 2018/9/1 17:03
対応状況: −−−
新米
登録日: 2018/8/7
居住地:
投稿: 6
Re: 送信エラーメールアドレスが送れない。
本当にありがとうございます!
そいうことですね。
すいません、1レス目ではどういうことだか理解してなったです。

おっしゃられた通りのコードで試してみました。

■ テスト1
//hogehoge <hogehoge@mail.com>;
->setReturnPath($this->BaseInfo->getShopName()." <".$this->BaseInfo->getEmail04().">")

■ テスト2
//hogehoge@mail.com <hogehoge>
->setReturnPath($this->BaseInfo->getEmail04()." <".$this->BaseInfo->getShopName().">")

■ 結果
2つのテスト結果は同じものでした。
1/1
Swift_RfcComplianceException in PathHeader.php line 138:
Address set in PathHeader does not comply with addr-spec of RFC 2822.

やはり、仕様なので難しいのでしょうか。。。。
対策されている人はいないのかな
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,854名です
総投稿数は109,989件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1291
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.