2

私が知る限り、私のメール設定は正しく構成されていますが、お問い合わせフォーム、新規顧客、または注文からではなく、メールを受信して​​いません。

ここに私の現在の設定があります:

ここに画像の説明を入力

私はもう試した:

  1. SMTP に変更すると、エラーが発生し、ホスト (IXWebHosting) が、アプリケーション内で認証を無効にする必要があると言いますが、これに対するオプションが表示されません。

  2. ここで提案されているように、電子メールの前に -f と -F を追加します

  3. [メール] ページの下部にある [送信先] ボックスに別のメールを追加する

  4. ここで提案されているように、コードで「From」ヘッダーを手動で定義する

  5. @gmail.com、@googlemail.com、@arabel.co.uk を試してみました

残念ながら、私はまだ OpenCart からメールを受け取っていません。ホストに連絡してテスト スクリプトを実行しました。メール機能やサーバーのセットアップに問題はなく、OpenCart から最新バージョンの mail.php をダウンロードしました (ただし、これは 6 か月前のものであり、とにかく使っていたもの)

ありがとう

アップデート:

次のコードが原因で、base64_encode が機能していないようです。

echo $header = 'From: ' . '=?UTF-8?B?' . base64_encode($this->sender) . '?=' . '<' . $this->from . '>' . $this->newline;
die();

これを出力します:

差出人: =?UTF-8?B?Tmljaw==?=

4

5 に答える 5

9

正直なところ、base 64 エンコードが存在する理由がよくわかりません。この行を開いsystem/library/mail.phpて変更します

echo $header .= 'From: ' . '=?UTF-8?B?' . base64_encode($this->sender) . '?=' . '<' . $this->from . '>' . $this->newline;

$header .= 'From: ' . $this->sender . ' <' . $this->from . '>' . $this->newline;
于 2013-01-13T18:54:22.650 に答える
3

可能なすべての修正を試みましたが、どれもうまくいきませんでした(私はSite5でホストされており、Webfactionではうまくいきました)。system/library/swiftmailer ディレクトリをインストールした SwiftMailer を使用して、system/library/mail.php ファイルのsend()関数を書き直しました。認証が常に必要であると想定しているため、私のコードは完全ではありませんが、これは簡単に修正できるはずです。

public function send() {
    require_once(DIR_SYSTEM . 'library/swiftmailer/swift_required.php');

    if (!$this->to) {
        trigger_error('Error: E-Mail to required!');
        exit();         
    }

    if (!$this->from) {
        trigger_error('Error: E-Mail from required!');
        exit();                 
    }

    if (!$this->sender) {
        trigger_error('Error: E-Mail sender required!');
        exit();                 
    }

    if (!$this->subject) {
        trigger_error('Error: E-Mail subject required!');
        exit();                 
    }

    if ((!$this->text) && (!$this->html)) {
        trigger_error('Error: E-Mail message required!');
        exit();                 
    }

    if (is_array($this->to)) {
        $to = implode(',', $this->to);
    } else {
        $to = $this->to;
    }

    $message = Swift_Message::newInstance()
      ->setSubject($this->subject)
      ->setFrom(array($this->from => $this->sender))
      ->setTo(array($to))
      ->setBody($this->text);

    if($this->html){
        $message->addPart($this->html, 'text/html');
    }

    foreach ($this->attachments as $attachment) {
        if (file_exists($attachment)) {
            $message->attach(Swift_Attachment::fromPath($attachment));
        }
    }

    $transport = Swift_SmtpTransport::newInstance('localhost', 25)
    ->setUsername($this->username)
    ->setPassword($this->password);

    $mailer = Swift_Mailer::newInstance($transport);
    $mailer->send($message);
}
于 2014-02-22T15:28:56.367 に答える
3

サイトの設定メニューに複数のメール アドレスを追加してみてください。(サイト管理)。

OpenCart バージョン 1.5.5.3 ではうまくいきました。

ここに画像の説明を入力

于 2013-06-13T17:54:04.837 に答える
3

私はそれで本当に大きなフラストレーションを感じました..

問題は実際にはサーバーにあります...メールオプションを使用する場合は、ローカルホストにメールサーバーをセットアップする必要があります。しかし問題は、ISP が smtp 用に 25 ポートをサポートしているかどうかです。そうでない場合は、問題が発生しました。

2 番目のオプションは、gmail smtp または hotmail smtp を使用することです。なぜgmailがうまくいかないのかはわかりませんが、インターネット全体をグーグルで検索したところ、ランダムにgmailに問題がある人がいることがわかりました。

私は検索していて、最後の手段を試しました..私のISPからのsmtp。ISP の smtp を使用し、SMTP でオプションを設定したところ、動作することがわかりました。

ISP に電話したところ、gmail が機能しない理由はわかりませんでしたが、スパマーがあなたのユーザー名でメールを送信するのを防ぐために 25 ポートを閉じているとのことでした。

TL,DR: localhost で作業している場合は、独自の isp smtp を試してください。そうでない場合は、ホスティング プロバイダーに問題を解決するよう依頼してください :)

PS: 認証を無効にすることはできません。以前のバージョンの opencart には認証がありませんでした。これは面白いことです。認証の有無を選択するオプションを追加しなかったのはなぜですか。

コーディングを知っている場合は、opencart でメール クラスを編集できます。そうでない場合、唯一の解決策は、ISP smtp を使用するか、メール サーバーが smtp 認証で設定されているホスティングに移動することです (これは、現在のホスティング)。

于 2013-02-12T15:46:54.527 に答える
2

私にとっての解決策は、「送信元」にホストとは異なるドメインがある場合、サーバーから電子メールを送信できないことでした。

test@mydomain.comお問い合わせフォームに入力すると機能し、通常のメールも届いたので、これは明らかでした。

入力された電子メールアドレスではなく、自分のホストからメールが送信されるようにするために、連絡先コントローラーを編集しました。

ソースコードの編集方法がわからない場合は、これを続行しないでください。いくつかの簡単な手順を省略しています。これらの手順がわからない場合は、尋ねるのではなく、専門家に調べてもらいます。(自分の身を守るためだけに)

ファイル:catalog/controller/information/contact.php

関数インデックス、21行目:

オリジナル:

$mail->setFrom($this->request->post['email']);

新着:

$mail->setFrom($this->config->get('config_email'));
$mail->setReplyTo($this->request->post['email']);

これで解決しました。

于 2017-01-10T18:40:06.160 に答える