Добрый день! Помогите, пожалуйста, с грамматикой. Как правильно прописать настройки внешнего SMTP сервера для моего скрипта, который отправляет почту? Код (Text): function cute_mail($to, $subject, $message, $filename = '', $type = 'plain'){ global $config; $eol = PHP_EOL; $mail = 'foto@itgreen.ru'; $uniqid = md5(uniqid(time)); $headers = 'From: '.$mail. $eol; $headers .= 'Reply-to: '.$mail. $eol; $headers .= 'Return-Path: '.$mail. $eol; $headers .= 'Message-ID: <'.$uniqid.'@'.$_SERVER['SERVER_NAME'].">". $eol; $headers .= 'MIME-Version: 1.0'. $eol; $headers .= 'Date: '.gmdate('D, d M Y H:i:s', time). $eol; $headers .= 'X-Priority: 3'."\n"; $headers .= 'X-MSMail-Priority: Normal'. $eol; $headers .= 'X-Mailer: '.$config['version_name'].' '.$config['version_id']. $eol; $headers .= 'X-MimeOLE: '.$config['version_name'].' '.$config['version_id']. $eol; $headers .= 'Content-Type: multipart/mixed;boundary="----------'.$uniqid.'"'. $eol;//. "\n\n"; $headers .= '------------'.$uniqid . $eol; $headers .= 'Content-type: text/'.$type.';charset='.$config['charset'] . $eol; $headers .= 'Content-transfer-encoding: 7bit'; if (is_file($filename)){ $file = fopen($filename, 'rb'); $message .= "\n".'------------'.$uniqid."\n"; $message .= 'Content-Type: application/octet-stream;name="'.basename($filename).'"'. $eol; $message .= 'Content-Transfer-Encoding: base64'. $eol; $message .= 'Content-Disposition: attachment;'; $message .= 'filename="'.basename($filename).'"'."\n\n"; $message .= chunk_split(base64_encode(fread($file, filesize($filename)))). $eol; } $res = mail($to, $subject, $message, $headers); }
Я в PHP.INI прописал Код (Text): smtp_server=smtp.yandex.ru smtp_port=465 smtp_ssl=auto error_logfile=error.log debug_logfile=debug.log auth_username=username auth_password=password Но письма все равно идут через phpmail провайдера. Поддержка сказала, что надо переделать скрипт отправки почты. Добавить туда что то типа Код (Text): <?php require_once "Mail.php"; $from = "Sandra Sender sender@example.com"; $to = "Ramona Recipient recipient@example.com"; $subject = "Hi!"; $body = "Hi,\n\nHow are you?"; $host = "mail.example.com"; $username = "smtp_username"; $password = "smtp_password"; $headers = array ('From' => $from, 'To' => $to, 'Subject' => $subject); $smtp = Mail::factory('smtp', array ('host' => $host, 'auth' => true, 'username' => $username, 'password' => $password)); $mail = $smtp->send($to, $headers, $body); if (PEAR::isError($mail)) { echo("<p>" . $mail->getMessage() . "</p>"); } else { echo("<p>Message successfully sent!</p>"); } ?> Но я не очень волоку в PHP
Ну я PHPMailer использую. Там просто PHP: require_once('PHPMailer/PHPMailerAutoload.php'); $mail = new PHPMailer(); $mail->AddAddress($email); $mail->IsSMTP(); $mail->SMTPSecure = "ssl"; $mail->Host = 'smtp.mail.ru'; $mail->SMTPAuth = true; $mail->Port = 465; $mail->Username = $Username; $mail->Password = $Password; $mail->From = $email; $mail->FromName = $head; $mail->CharSet='utf-8'; $mail->Encoding = "base64"; $mail->IsHTML(true); $mail->Subject = $Subject; $mail->ReturnPath = $email; $mail->AddEmbeddedImage("img.img", $filename, $filename, 'base64', $type); $mail->AddAttachment("doc.doc", $filename); $mail->Body = $html; $mail->AltBody = strip_tags($html); if (!$mail->Send()) {$error='Ошибка: '.$mail->ErrorInfo;}
Вот так и должно, скачать PHPMailer наполнить переменные $Username имя $email пароль AddAddress($email) кому $mail->AddAttachment("doc.doc", $filename); вложить файл AddEmbeddedImage картинку $mail->Subject заголовок $mail->From от кого и т.д.