2016-08-27 2 views
1

Использование пакета SwiftMailer в php и локальном почтовом сервере hMailServer. Код Php:Почему Swift Mailer позволяет отправлять сообщения без пароля?

<?php 

require 'vendor/autoload.php'; 

$message=Swift_Message::newInstance(); 
$message->setFrom('[email protected]'); 
$message->setTo(array('[email protected]'=>'Ilqar Rasulov')); 
$message->setSubject('Delicious New Recipe'); 
//$message->setBody(<<<_TEXT_ 
//Dear James, 
//You should try this: puree 1 pound of chicken with two pounds 
//of asparagus in the blender, then drop small balls of the mixture 
//into a deep fryer. Yummy! 
//Love, 
//Julia 
//_TEXT_ 
//); 
$message->addPart(<<<_TEXT_ 
<p>Dear James,</p> 
<p>You should try this:</p> 
<ul> 
<li>puree 1 pound of chicken with two pounds 
of asparagus in the blender</li> 
<li>then drop small balls of the mixture into a deep fryer.</li> 
</ul>  
<p><em>Yummy!</em></p> 
<p>Love,</p> 
<p>Julia</p> 
_TEXT_ 
, "text/html"); 
try{ 
$transport= Swift_SmtpTransport::newInstance('localhost',25); 
$mailer= Swift_Mailer::newInstance($transport); 

$mailer->send($message); 
} catch (Exception $ex){ 
    print $ex->getMessage(); 
} 

Я настроил свой hMailServer и назначил пароли (пароль администратора и учетных записей). Поэтому возникает вопрос, почему для swiftmailer требуется только имя хоста и пароль для выполнения своей работы, и не требуется аутентификация? Потому что я не могу вспомнить, что я сохранил имя пользователя и пароль в любых файлах конфигурации.

ответ

2

Для того, чтобы отправить по электронной почте от hMailServer, вам нужно создать транспортный объект, как это (как описано here):

// Create the Transport the call setUsername() and setPassword() 
$transport = Swift_SmtpTransport::newInstance('smtp.example.org', 25) 
    ->setUsername('username') 
    ->setPassword('password') 
    ; 

// Create the Mailer using your created Transport 
$mailer = Swift_Mailer::newInstance($transport); 

отметить также, что вам нужно заменить smtp.example.org, username и passwort с вашим соответствующие настройки hMailServer.

В настоящее время ваш сценарий не отправляет электронное письмо с помощью hMailServer, а с сервера, на котором находится ваш скрипт с php mail() function. Вы можете использовать любой адрес FROM с функцией mail(), но многие поставщики электронной почты признают это спамом. Поэтому неплохо создать транспортный объект.

+0

поэтому, похоже, до этого момента я отправил почту без ввода почтового сервера? Я перешел на любой переходящий адрес в «от», и он сработал! После изменения вашего варианта он начал проверять имя пользователя и пароль. Спасибо за ответ, теперь я понял, как это работает –

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