#php #forms #email #contacts #send
Вопрос:
Я использую приведенный ниже код шаблона для своего веб-сайта, и у меня возникли проблемы с отправкой электронной почты с контактной формой.
require_once "Mail.php";
// Change this options:
$username = 'user@gmail.com';
$password = 'password';
$smtpHost = 'ssl://smtp.gmail.com';
$smtpPort = '465';
$to = 'user@gmail.com';
$from = 'user@gmail.com';
Как бы я заменил информацию о заполнителе на электронное письмо GoDaddy?
Я пробовал несколько методов, но моя кнопка «отправить» ничего не делает.
Действительно ли мне нужно вводить свое имя пользователя электронной почты и паспорт в этой форме?
Зачем мне нужно указывать, от кого отправлено электронное письмо, если оно вводится в форму?
Ответ №1:
Похоже, вы используете почту PEAR для отправки с помощью внешнего SMTP-сервера. Это выполнимо и часто является одним из самых простых способов отправки электронной почты с помощью PHP. Ваш код неполон, так как я не вижу ничего, что могло бы на самом деле отправить письмо. Но чтобы ответить на ваши другие вопросы:
Во-первых, вам действительно нужно ввести имя пользователя электронной почты и паспорт, чтобы отправить электронное письмо, потому что оно используется для аутентификации на SMTP-сервере. НЕ вводите его в HTML-форму, держите его скрытым внутри PHP-скрипта.
Во-вторых, для «от» не используйте электронную почту, введенную для этого. Вместо этого установите «от» на любой адрес электронной почты, с которого вы хотите, чтобы он отображался при отправке почты, например, на ваш адрес электронной почты (gmail) здесь. Часто SMTP-сервер отклоняет сообщение, если оно не с того же адреса, который вы используете в качестве входа. Не уверен, что gmail делает это, так как я никогда не использовал их SMTP-сервер, но это то, что они сделали бы. Я бы предположил, что Годадди, вероятно, тоже так делает.
Введите адрес электронной почты пользователя в качестве нового, необязательного поля, Reply-To
поля. Это будет удобно для вас, потому что вы можете просто нажать «Ответить» на сообщение, и оно отправится нужному пользователю.
Лично я более неравнодушен к объектно-ориентированному способу использования PEAR. Вот как бы я это закодировал:
require_once(`Mail.php');
$headers['From'] = 'Your Name <your_email@whateverdomain.com>';
$headers['To'] = $recipients;
$headers['Subject'] = "$subject";
$headers['Date'] = date('r', time()); // Auto-generate date
$headers['Reply-To'] = "$email_from_form";
$params['host'] = 'ssl://smtp.yourhost.com'; // Look this up from your SMTP provider
$params['port'] = '465'; // This may need to be changed with some providers, look it up in the provider's documentation
$params['auth'] = true; // Nearly always needs to be true nowadays
$params['username'] = 'username'; // Look this up from your SMTP provider
$params['password'] = 'password';
$mail_object =amp; Mail::factory('smtp', $params);
$output=$mail_object->send($recipients, $headers, $body);
// Error handling
if(PEAR::isError($output))
{
$error=$output->getMessage();
// Do whatever you want with this error. I output it during setup / configuration, then on the live production server I store it in a log or database that I check regularly.
}
Для устранения неполадок просто разбейте его на части. Если PEAR выдает ошибку, проверьте ее, и вы сможете понять, что делать. Если вы получите ошибку до этого, надеюсь, это поможет вам понять, что происходит. И, прежде чем что-либо из этого, убедитесь, что отправленная веб-форма правильно собирает информацию.
Соберите их из $_POST
переменных. Вроде $email_from_form=$_POST['email'];
и все такое.
Наконец, прежде чем вы начнете это делать, проверьте безопасность контактных форм электронной почты. Вы обнаружите, что злоумышленники начнут пытаться что-то делать с вашей формой почти сразу после ее запуска. Вам абсолютно необходимо обеспечить некоторую безопасность, иначе вы быстро обнаружите, что ваш адрес электронной почты, на который отправляется форма, заполнен странным спамом и попытками взлома.
Как минимум, выполните некоторые проверки отправляемых вами данных. Я применяю комплекс мер по борьбе со спамом в любой форме веб-контента, от поддельных полей до времени и криптографических хэшей, которые не позволяют роботам размещать формы в закладках. Даже в этом случае некоторые спам-сообщения все равно доходят. В эти дни тебе нужно быть очень осторожным.