回答:
Magento 2のメールシステムを適切に設定している場合は、以下の点を確認する必要があります。
Stores -> Configuration -> Advanced -> System
下にメール送信設定を確認するDisable Email Communications
に設定されていますNo
。また、外部メールサーバーを使用している場合は、Host
およびPort
フィールドを確認してください。
Stores -> Configuration -> Sales -> Sales Emails
下では一般設定 ]タブ、選択Asynchronous sending
しますDisable
Order
タブの下Enabled
にYes
キャッシュをクリア/リフレッシュしてください。
これがお役に立てば幸いです。このソリューションはMagento 2.1.0でテストされています
これは機能します。
transportbuilderbystoreクラスは2.3ですでに非推奨になっており、まもなく2.2で提供されます。
Magento 2.2.7で修正されました。
修正:vendor / magento / module-sales / Model / Order / Email / SenderBuilder.php
取り替える
$this->transportBuilderByStore->setFromByStore(
$this->identityContainer->getEmailIdentity(),
$this->identityContainer->getStore()->getId()
);
と
$this->transportBuilder->setFrom(
$this->identityContainer->getEmailIdentity(),
$this->identityContainer->getStore()->getId()
);
vendor / magento / framework / Mail / Template / TransportBuilder.php
取り替える
/**
* Set mail from address
*
* @param string|array $from
* @return $this
*/
public function setFrom($from)
{
$result = $this->_senderResolver->resolve($from);
$this->message->setFrom($result['email'], $result['name']);
return $this;
}
と
/**
* Set mail from address
*
* @param string|array $from
* @return $this
*/
public function setFrom($from, $store = null)
{
$result = $this->_senderResolver->resolve($from, $store);
$this->message->setFrom($result['email'], $result['name']);
return $this;
}
同様に、TransportBuilderByStoreは不要になり、期待どおりに機能します。
同じ問題があり、実際の問題は「from」ヘッダーが原因であることがわかりました。どういうわけか二度セットされていました。この問題を解決するには、以下のファイルを更新してください:
vendor \ magento \ framework \ Mail \ Template \ TransportBuilderByStore
public function setFromByStore($from, $store)
{
$result = $this->senderResolver->resolve($from, $store);
$this->message->setFrom($result['email'], $result['name']);
return $this;
}
に
public function setFromByStore($from, $store)
{
$result = $this->senderResolver->resolve($from, $store);
if ($this->message->getFrom()) {
$this->message->clearFrom();
}
$this->message->setFrom($result['email'], $result['name']);
return $this;
}