2014-12-12 2 views
0

У меня есть сайт, на котором я предоставляю пользователям возможность подписаться на рассылку новостей.Оставайтесь на сервере SMTP при отправке писем

Как только пользователь вводит свой адрес электронной почты, я хочу отправить ему письмо с подтверждением, содержащее ссылку с токеном. Как обычно, как только пользователь нажимает на ссылку, их электронная почта подтверждается и добавляется в базу данных моих подписчиков.

я успешно реализовал это с PHPMailer, используя следующие шаги:

  1. Создать учетную запись электронной почты на моем хосте (например, адрес [email protected])
  2. На моем PHP кода, когда Я хочу отправить электронное письмо с этим адресом электронной почты, выполнить вход в SMTP, используя «localhost» в качестве имени домена, а также имя пользователя и пароль, которые я использовал при создании учетной записи электронной почты на шаге 1.
  3. Отправьте электронное письмо.

Когда пользователь нажимает кнопку «Подписываться на нашу рассылку», он видит значок загрузки и получает сообщение, сообщающее ему проверить свой почтовый ящик. Шаг 2 (вход в SMTP) занимает больше времени для выполнения с PHP.

Есть ли способ оставаться в учетной записи SMTP и просто отправлять электронные письма, когда пользователи запрашивают подписку на информационный бюллетень, чтобы сократить время загрузки (и, возможно, нагрузку на сервер)?

+0

PHP не является постоянным. Когда HTTP-запрос завершен, PHP завершает работу. На сервере ничего не будет работать, чтобы открыть это smtp-соединение. И каждый PHP-экземпляр в любом случае нуждается в собственном smtp-соединении. –

ответ

0

Звучит так, будто вы слишком много. Не нужно регистрироваться каждый раз. Все, что вам нужно для отправки электронной почты с помощью PHPMailer, это

$mail = new PHPMailer; 
$mail->From = '[email protected]'; 
$mail->FromName = 'Mailer'; 
$mail->addAddress('[email protected]'); 

$mail->Subject = 'Here is the subject'; 
$mail->Body = 'This is the HTML message body <b>in bold!</b>'; 


if(!$mail->send()) { 
    echo 'Message could not be sent.'; 
    echo 'Mailer Error: ' . $mail->ErrorInfo; 
} else { 
    echo 'Message has been sent'; 
} 
+0

Нет, я никого не перегоняю. Если я не вхожу в систему через SMTP, то это 'somethingelse @ somedomain.com' (домен моего веб-пространства), а ответ-это тот, который я установил на адрес From (' noreply @ mydomain.com') – hakermania

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