Чаще всего это проблемы связаны с портами и сертификатами.
Приведу простой пример кода, для отправки писем через почту на яндексе (smtp.yandex.ru)
<?
class cSOMailer
{
function __construct()
{
date_default_timezone_set('Europe/Moscow');
require_once('class.phpmailer.php');
}
function goMail($Email, $sTitle, $sMSG)
{
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->SMTPKeepAlive = true;
//$mail->SMTPDebug = 1;
//- $mail->SMTPSecure = "tls";
$mail->SMTPSecure = "ssl";
$mail->Host = 'smtp.yandex.ru';
//-$mail->Port = 587;
$mail->Port = 465;
$mail->Username = 'noreply@test.ru';
$mail->Password = 'PASS';
$mail->SetFrom('noreply@test.ru');
//$mail->CharSet = 'Windows-1251';
$mail->CharSet = 'UTF-8';
$mail->Subject = $sTitle;
$mail->MsgHTML( $sMSG );
$aEmails = explode(',', $Email);
if (is_array($aEmails))
{
foreach($aEmails as $sEmail)
{
$sEmail = trim($sEmail);
$mail->AddAddress( $sEmail );
$sError .= "<br/>\n $sEmail: ".$sEmail;
}
}
else
{
$sEmail = trim($aEmails);
$mail->AddAddress( $sEmail );
$sError .= "<br/>\n $sEmail: ".$sEmail;
}
/*
if($attachment) {
if(is_array($attachment)) {
foreach($attachment as $fname) {
$mail->AddAttachment($fname);
}
} else {
$mail->AddAttachment($attachment);
}
}
if($attachment_img) {
if(is_array($attachment_img)) {
foreach($attachment_img as $fname) {
$mail->AddEmbeddedImage($fname[0],$fname[1]);
}
} else {
$mail->AddEmbeddedImage($attachment_img[0],$attachment_img[1]);
}
}
*/
if(!$mail->Send())
{
$bRet = FALSE;
}
else
{
$bRet = TRUE;
}
$mail->ClearAddresses();
$mail->ClearAttachments();
return $bRet;
}
}
?>
Внимание! Если ящик яндекса был создан, но в него еще не заходили через веб интерфейс (для финального шага регистрации), то отправка по SMTP работать не будет!