Дело в том что PHPmailer вложения отправляет в письме очень долго.
Хотелось бы узнать почему такое и как это устранить
небольшой конфиг
PHP:
скопировать код в буфер обмена
<?PHP
"host" => "ssl://smtp.yandex.ru", //smtp сервер
"debug" => 2, //отображение информации дебаггера (0 - нет вообще)
"auth" => true, //сервер требует авторизации
"port" => 465, //порт (по-умолчанию - 25)
"username" => "no-reply@yandex.ru",//имя пользователя на сервере
"password" => "password",//пароль
"addreply" => "no-reply@vasdomen.ru",//ваш е-mail
"replyto" => "your2@email.com" //e-mail ответа
);
?>
сам файл
PHP:
скопировать код в буфер обмена
<?PHP
function smtpmail($to, $subject, $content, $attach=false, $attachname = 0, $attachcode = "base64", $attachtipe = "Application/octet-stream")
{
require_once('config.php'); //путь до конфигурационного файла для вашего smtp сервера
require_once('class.phpmailer.php'); //путь до класса phpmailer
$mail = new PHPMailer(true);
$mail->IsSMTP();
try {
$mail->CharSet="UTF-8";
$mail->Host = $__smtp['host'];// адрес сервера пересылки
$mail->SMTPDebug = $__smtp['debug']; // дебаг
$mail->SMTPAuth = $__smtp['auth']; // авторизация
$mail->Port = $__smtp['port']; // порт сервера
$mail->Username = $__smtp['username']; // логин для входа на сервере
$mail->Password = $__smtp['password']; // пароль от логина
$mail->AddReplyTo($__smtp['addreply'], "Сайт Название"); // кому направлять ответ на ваше письмо
$mail->AddAddress($to, "Логин получателя"); //кому письмо будет отправлено
$mail->SetFrom($__smtp['username'], "Сайт Название"); //данные отправителя
//$mail->AddReplyTo($__smtp['replyto'], $__smtp['replyto']);
$mail->MsgHTML($content); // текс письма в виде HTML
$mail->AltBody = "Альтернативный текст"; // альтернативный текст письма
if($attach) $mail->AddAttachment($attach, $attachname, $attachcode, $attachtipe); // вложения если есть
$mail->WordWrap = 50;// set word wrap
$mail->Priority = 1;
$mail->Send();
echo "Message sent Ok!</p>\n";
$mailer->ClearAddresses(); // очищаем адрес
$mailer->ClearAttachments(); // очищаем вложение
} catch (phpmailerException $e) {
echo $e->errorMessage();
} catch (Exception $e) {
echo $e->getMessage();
}
}
$file = "flowers_05032010019.jpg";
$filename = "flowers2.jpg";
$filetip = "image/jpeg";
smtpmail("komu@yourmail", "Тема письма", "Текст письма", $file, $filename, "base64", $filetip);
?>
при запуске скрипта все хорошо
SMTP -> FROM SERVER:221 2.0.0 Closing connection.
Message sent Ok!
Но, отправка длится очень долго, хотя файл картинки не превышает 700 КБайт
Смотрел на сервере соединение, проверял скорость, там картина такая: соединение на 465 порту есть, но передача данных происходит рывками, 70-90Кбайт проскочит за секунду потом опять тишина, скорость передачи 0 в течении 5-6 секунд, потом опять рывок 70-90Кбайт проскакивает на smtp сервер яндекса
Если попытаться отправить файл 1Мбайт размером, то Nginx выдаст ошибку из за длительности ожидания.
Проблема решена. Тему можно закрывать
Удалил VIRTUALBOX и установил вместо него VMware. Теперь скорость передачи данных с виртуальной машины на реальную стабильней и выше. Так же теперь для apache не нужен модуль rpaf так как ip адреса в логах стали реальными.