質問編集履歴
3
関連するタグを追加しました
title
CHANGED
File without changes
|
body
CHANGED
File without changes
|
2
情報の追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -6,4 +6,54 @@
|
|
6
6
|
また、メールフォームのプログラムは複雑に作り込まれていて、できれば手を加えたくありません。
|
7
7
|
|
8
8
|
サーバーの設定あるいはPHPの設定で何とかなる方法はないでしょうか。
|
9
|
-
移行先のサーバーはさくらのレンタルサーバーです。
|
9
|
+
移行先のサーバーはさくらのレンタルサーバーです。
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
※以下、追記内容となります。
|
14
|
+
|
15
|
+
あまり詳しくないので、上手く説明できないのですが・・・。
|
16
|
+
メールフォームの管理者宛てメールアドレスが「info@example.com」とします。
|
17
|
+
この「info@example.com」はGSuiteを使用しています。ビジネス用Gmailみたいなものです。
|
18
|
+
メールフォームのWEBサーバーはさくらのレンタルサーバーで、ドメインは「https://example.com」となります。
|
19
|
+
ドメインはお名前で管理しています。
|
20
|
+
mail関数(sendmail)で「info@example.com」に送信しようとすると、
|
21
|
+
メールアドレスがWEBサーバーと同一ドメインなのでGmailのほうではなく、
|
22
|
+
サーバー内部のメールアドレスへ送信しようとしてしまうらしく、Gmail側にメールが届きません。
|
23
|
+
さくらのレンタルサーバー側には「info」のメールアドレスは作成していません。
|
24
|
+
下記URLと同じような状況です。
|
25
|
+
参照:[同一ドメインで、Webとメールを別サーバで運用したときのメール送信問題](https://www.evoworx.co.jp/blog/domain-mail-problem/)
|
26
|
+
|
27
|
+
上記のような理由により、sendmailではなくSMTP認証にて外部SMTPサーバーを使用してメールを送信したいのです。
|
28
|
+
今回はその外部SMTPサーバーがGmailのSMTPサーバーとなっています。
|
29
|
+
|
30
|
+
ちなみにメール送信部分のコードは以下の通りです。
|
31
|
+
```PHP
|
32
|
+
function sendmail($from, $to, $reply_to, $subject, $body, $mail_encode = 'UTF-8') {
|
33
|
+
|
34
|
+
$this->message = null;
|
35
|
+
$this->mail_encode = strtoupper($mail_encode);
|
36
|
+
$encode_from = $this->_encodeHeader('From', $from);
|
37
|
+
$encode_to = $this->_encodeHeader('To', $to);
|
38
|
+
$encode_reply_to = $this->_encodeHeader('Reply-to', $reply_to);
|
39
|
+
$encode_subject = $this->_encodeHeader('Subject', $subject);
|
40
|
+
$encode_body = $this->_encodeBody($body);
|
41
|
+
$matches = null;
|
42
|
+
|
43
|
+
if(preg_match('/<([0-9a-z\.\-_]+@[0-9a-z\.\-_]+)>$/i', $to, $matches)) $to = $matches[1];
|
44
|
+
|
45
|
+
$mail_header = array();
|
46
|
+
$mail_header[] = 'From: ' . $encode_from;
|
47
|
+
$mail_header[] = 'MIME-Version: 1.0';
|
48
|
+
$mail_header[] = 'Content-Type: text/plain; charset='. $this->mail_encode;
|
49
|
+
$mail_header[] = 'Content-Transfer-Encoding: ' . (strcmp('UTF-8', $this->mail_encode) == 0 ? 'base64' : '7bit');
|
50
|
+
|
51
|
+
if(strlen($encode_reply_to) > 0) $mail_header[] = 'Reply-To: ' . $encode_reply_to;
|
52
|
+
|
53
|
+
$send_mail = mail($to, $encode_subject, $encode_body, trim(join($this->eol, $mail_header)));
|
54
|
+
|
55
|
+
if($send_mail !== true) $this->message = $send_mail;
|
56
|
+
|
57
|
+
return $send_mail;
|
58
|
+
}
|
59
|
+
```
|
1
title
CHANGED
File without changes
|
body
CHANGED
File without changes
|