Замена метода PHP mail()?

Я пытаюсь настроить веб-сайт на (общей) учетной записи веб-хостинга. И у меня возникла проблема с методом mail(). На сайте есть контактная форма, где пользователь может оставить свой отзыв:

Name: _____________
Email: ____________
Message: __________

Поэтому я использовал метод mail() как таковой, чтобы отправить его по электронной почте на свою учетную запись:

if(mail("[email protected]", 
    "Customer message", 
    $message,
    "From: $name <$email>\r\n".
    "Reply-To: $name <$email>\r\n".
    "X-Mailer: PHP/".phpversion()) === true)
{
    $messageWasSent = true;
}

Поэтому, когда я пытаюсь это сделать, электронное письмо отправляется, но с ним возникает несколько проблем.

Например, для моего теста я указал свой фактический адрес электронной почты, скажем, [email protected], но когда электронное письмо получено в моей [email protected] учетной записи Hotmail, поле электронной почты from заполняется адресом электронной почты по умолчанию на сервере виртуального хостинга или чем-то вроде [email protected], а не [email protected] как я и ожидал.

Также электронная почта была автоматически помещена в нежелательную почту Hotmail, даже если она не содержала вложений, изображений или чего-либо еще. Это было обычное текстовое сообщение.

Вот скриншот:

введите здесь описание изображения

Итак, я понимаю, что эта виртуальная хостинговая компания не хочет, чтобы я рассылал спам с помощью метода mail(), но как еще я могу отправлять эти электронные письма с моего веб-сайта? Есть ли альтернативный метод для mail()?


person c00000fd    schedule 28.03.2016    source источник
comment
Вы не можете отправлять сообщения со своей учетной записи Hotmail, потому что почти все почтовые провайдеры используют систему для защиты от писем, отправленных с адресов, не внесенных в белый список.   -  person Ferrybig    schedule 28.03.2016
comment
Вы можете использовать службу электронной почты, например sendgrid.com.   -  person Tchoupi    schedule 28.03.2016
comment
@Чупи: Спасибо. SendGrid звучит очень красиво. Вы использовали его, насколько он надежен? Пока это не делает никаких махинаций, таких как Мандрил сделал в этом году.   -  person c00000fd    schedule 28.03.2016
comment
@ c00000fd API прост в использовании, сервис очень надежен. Я использовал его для нескольких проектов, и мне это нравится.   -  person Tchoupi    schedule 28.03.2016
comment
@Tchoupi: Приятно это знать. Спасибо. Хотя мне любопытно, у них есть бесплатная учетная запись и учетная запись за 9,95 долларов США в месяц, но когда я проверяю спецификации, они, как правило, одинаковы, за исключением количества электронных писем в месяц: sendgrid.com/marketing/mandrill-alternative Я правильно понял?   -  person c00000fd    schedule 28.03.2016


Ответы (1)


Вы можете использовать PHPMailer.

Пример:

$mail = new PHPMailer;
$mail->isSMTP();

// You can use the SMTP host/auth details
// supplied by your personal email provider.
$mail->SMTPAuth = true;
$mail->Host = 'smtp.example.com';
$mail->Username = 'myUsername';
$mail->Password = 'myPassword';

$mail->setFrom('[email protected]');
$mail->addAddress('[email protected]');

$mail->Subject = 'A subject.';
$mail->Body = 'A message.';

$mail->send();

Поскольку вы выполняете аутентификацию с помощью hotmail/gmail или любого другого почтового сервера, который вы используете, получатель получит электронное письмо так же, как если бы вы отправили его с помощью своего любимого почтового клиента (это почтовый клиент PHP).

person noahnu    schedule 28.03.2016