2015-08-05 2 views
0

Я не знаю, возможно ли то, что я хочу сделать (но выяснение, что это не было бы полезно само по себе).PHPMailer: пересылка динамической gmail

Я не могу использовать учетную запись gmail моей компании «[email protected]» непосредственно с помощью PHPMailer. Однако я могу использовать посредническую учетную запись gmail «[email protected]», которая может включать «менее безопасные приложения», что позволяет проверять SMTP.

Однако я не хочу, чтобы электронные письма отправлялись с этой учетной записи [email protected] (не выглядели бы особенно профессионально), а скорее в учетной записи gmail компании.

Я могу отправить электронные письма с учетной записи посредника в [email protected]; либо путем редактирования параметров PHPMailer, либо путем автоматической пересылки электронных писем с [email protected] на учетную запись компании.

Проблема заключается в том, как [email protected] может затем успешно отправить электронное письмо по электронной почте (или, по крайней мере, быть отправителем), как первоначально предполагалось.

код до сих пор

$Mail = new PHPMailer(); 
$Mail->IsSMTP(); // Use SMTP 
$Mail->Host  = "smtp.gmail.com"; // Sets SMTP server for gmail 
$Mail->SMTPDebug = 0; // 2 to enable SMTP debug information 
$Mail->SMTPAuth = TRUE; // enable SMTP authentication 
$Mail->SMTPSecure = "tls"; //Secure conection 
$Mail->Port  = 587; // set the SMTP port to gmail's port 
$Mail->Username = '[email protected]'; // gmail account username 
$Mail->Password = 'a_password'; // gmail account password 
$Mail->Priority = 1; // Highest priority - Email priority (1 = High, 3 = Normal, 5 = low) 
$Mail->CharSet  = 'UTF-8'; 
$Mail->Encoding = '8bit'; 
$Mail->Subject  = 'Mail test'; 
$Mail->ContentType = 'text/html; charset=utf-8\r\n'; 
$Mail->From  = '[email protected]'; //Your email adress (Gmail overwrites it anyway) 
$Mail->FromName = 'Testing Again'; 
$Mail->WordWrap = 900; // RFC 2822 Compliant for Max 998 characters per line 

$Mail->addAddress($personEmail); // To: the PERSON WE WANT TO EMAIL 
$Mail->isHTML(TRUE); 
$Mail->Body = ' Good news '.$personName.'! The email sent correctly!'; 
$Mail->AltBody = 'This is a test mail'; 
$Mail->Send(); 
$Mail->SmtpClose(); 

if(!$Mail->send()) { 
echo 'Message could not be sent.'; 
echo 'Mailer Error: ' . $Mail->ErrorInfo; 
exit; 
} 

Так вопрос: не имея электронной почты, отправляемой в $ personEmail из [email protected] (что тривиально), а скорее, как отправить письмо из [email protected] на [email protected], так что [email protected] перенаправляет сообщение в $ personEmail

+0

Я не следую. Вы говорите, что тривиально отправлять электронные письма 'TO:' $ personEmail, 'FROM: '[email protected] через [email protected]? Но это тоже невозможно (комментарии в вашем коде согласны!) (Gmail все равно перезаписывает) ') – HPierce

+0

@HPierce oh no: тривиально отправлять электронные письма TO: $ personEmail, FROM: [email protected] , Это бит ** через **, это проблема! – Stumbler

+0

Независимо от самой проблемы (которую я не думаю, что вы можете исправить в gmail), вы основали свой код на старом примере и, вероятно, используете старую версию PHPMailer, которая никогда не помогает. – Synchro

ответ

0

То, что вы описываете, действительно ретранслируется, как правило, настраивается в конфигурации почтового сервера (а не в сообщениях), но у вас нет доступа к чему-либо подобному в gmail.

Вы можете установить допустимые псевдонимы в gmail, но я бы предположил, что им не разрешено перекрываться с существующими именами учетной записи gmail, поскольку это будет серьезное отверстие безопасности. Почему бы не включить «менее безопасные приложения» в основной учетной записи? Это не похоже на то, что на самом деле это менее безопасно - если что-то лучше, потому что установка на использование OAuth2 настолько сложна и неприятна ...

Это говорит, что вместо того, чтобы пытаться сделать всю эту подделку, заинтересованы в this PR и associated docs. Вероятно, ветвь xoauth будет объединена в master и выпущена без каких-либо дальнейших изменений в виде PHPMailer 5.2.11, и было бы очень полезно, если бы вы могли попробовать.

+0

Хммм. Я подозревал, как много. Бизнес-аккаунт основан на gmail, хотя и с другим доменным именем, и многие функции отключены (один из которых позволяет менее безопасные приложения). Я боюсь, что вы используете oauth2 с помощью PHPMailer (получение чего-либо по электронной почте, связанного с работой, как правило, бывает сложным в лучшие времена!). В частности, те связанные документы - в то время как очень красиво написаны, упоминают «get_auth_token.php», который, кажется, отсутствует в PHPMailer:/ – Stumbler

+1

Спасибо - я написал их! Вы найдете get_auth_token.php в ветке [xoauth branch] (https://github.com/PHPMailer/PHPMailer/tree/xoauth), это еще не все. – Synchro

0

PHPMailer предназначен для отправки.

Что вы хотите сделать, это отправить электронное письмо. Это подразумевает получение электронной почты, а затем ее отправку.

Что вам нужно, это какой-то IMAP клиента в PHP, который позволит вам прочитать электронные письма на [email protected] (и, возможно, [email protected]). Затем сохраните их тело и заголовок и передайте его PHPMailer. Затем вы можете использовать PHPMailer до отправьте электронное письмо с адресом [email protected]

+0

Он это знает - проблема в том, что он пытается отправить, притворяясь другим аккаунтом. – Synchro

+0

Если '$ Mail-> Username' и' $ Mail-> From' отличаются, почта будет фильтроваться как спам. Также как вы собираетесь отправлять существующий адрес электронной почты с помощью PHPMailer (что и подразумевает пересылка), не открывая сначала адрес электронной почты ... –

+0

Имя пользователя и From не должно совпадать в gmail, если оно находится в списке разрешенных псевдонимов. В любой другой системе имя пользователя необязательно должно появляться в любом месте сообщения и не будет влиять на фильтрацию спама - вы можете ввести его в заблуждение с адресом отправителя, который является совершенно отдельным. То, что он на самом деле описывает, - это ретрансляция почты, а не пересылка, которая требует прямого управления почтовым сервером, который недоступен в gmail, так что это что-то вроде потери. – Synchro

Смежные вопросы