2015-04-01 6 views
0

Это может быть долгим, поэтому я сожалею.Отправка почты с помощью gmail SMTP (Исправление чей-то кода)

Недавно я решил попробовать исправить код, используемый компьютерной лабораторией для отправки электронной почты. Он работал до тех пор, пока они недавно не попытались изменить адрес электронной почты для отправки. Моя проблема? Я мало знаю об этом типе кодирования и о том, какие фрагменты кода они изменили. Я нашел функцию, которую они используют для отправки почты. Я надеялся, что кто-то может помочь мне указать, в чем проблема. Или что я могу изменить, чтобы заставить его работать. Я думаю, это потому, что пароль никогда не просят. Но я не понимаю, что сделал тот, кто написал этот код.

Вот код, на который я смотрю.

function SendMail($ToName, $ToEmail, $FromName, $FromEmail, $Subject, $Body, $Header) 
{ 
$SMTP = fsockopen("smtp.gmail.com", 465); 

$InputBuffer = fgets($SMTP, 1024); 

fputs($SMTP, "HELO $smtp.gmail.com\n"); 
$InputBuffer = fgets($SMTP, 1024); 
fputs($SMTP, "MAIL From: $FromEmail\n"); 
$InputBuffer = fgets($SMTP, 1024); 
fputs($SMTP, "RCPT To: $ToEmail\n"); 
$InputBuffer = fgets($SMTP, 1024); 
fputs($SMTP, "DATA\n"); 
$InputBuffer = fgets($SMTP, 1024); 
fputs($SMTP, "$Header"); 
fputs($SMTP, "From: $FromName <$FromEmail>\n"); 
fputs($SMTP, "To: $ToName <$ToEmail>\n"); 
fputs($SMTP, "Subject: $Subject\n\n"); 
fputs($SMTP, "$Body\r\n.\r\n"); 
fputs($SMTP, "QUIT\n"); 
$InputBuffer = fgets($SMTP, 1024); 

fclose($SMTP); 
} 

Они нажимают кнопку и отправляют электронное письмо. Или выполняет функцию как минимум. Я обнаружил, что когда они нажимают кнопку, вызываются определенные переменные. Другие переменные вызываются из базы данных, в которой хранится личная информация. (Изменил электронную почту на случайную, чтобы получить возможность отправлять на этот вопрос.)

$fname = mysql_result($results, 0, "fname"); 
$FromName = "Support Center"; 
$FromEmail = "[email protected]"; 
$Subject = "Computer Finished"; 
$Body = "Your computer is fixed."; 
$Header = "Computer"; 

ли кто-нибудь сможет, возможно, мне точку в правильном направлении. Или кто-то может объяснить, как сделать программу выводом сообщения об ошибке? Я googled вокруг и нашел темы, говорящие об этом, но я все еще потерян. Было бы лучше просто написать новый код и даже не попытаться исправить его, так как я новичок? Любая помощь действительно ценится, так как я немного новичок в этом типе кода. Я могу это прочитать и понять, но ... я не понимаю глубинные функции.

ответ

0

Возможно, было проще просто переписать содержимое функции SendMail и использовать класс PHPMailer вместо ручного взаимодействия сокетов. Он может отправлять электронные письма по-разному - функция mail(), sendmail или SMTP. Его легко настроить, и он будет генерировать исключения, когда что-то не так во время сеансов SMTP. Просто разместите его где-нибудь на своем сайте и посмотрите примеры, предоставленные с пакетом.

+0

Я ценю ваш ответ. Спасибо, что пытались мне помочь, это именно то, что я искал. Но я все еще немного потерял, я боюсь. Если изменить функцию ... функция SendMail() { * все данные PHPMailer по умолчанию здесь * } и если я заполнить данные PHPMailer по умолчанию он должен отправить по электронной почте в любое время, я называю на функции SendMail правильно? Я знаю, что мне нужно вызывать определенные переменные с разных страниц .php. Мне нужны две переменные $ ToName и $ ToEmail. Адрес электронной почты и имя зависят от того, какой рабочий заказ открыт. Таким образом, единственное, что не может быть исправлено, - это адрес электронной почты и имя. –

Смежные вопросы