teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

関連するタグを追加しました

2019/06/13 02:56

投稿

apricot-works
apricot-works

スコア15

title CHANGED
File without changes
body CHANGED
File without changes

2

情報の追記

2019/06/13 02:56

投稿

退会済みユーザー
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

2019/06/12 11:49

投稿

apricot-works
apricot-works

スコア15

title CHANGED
File without changes
body CHANGED
File without changes