Это может быть долго, поэтому извините.
Недавно я решил, что собираюсь попробовать исправить код, используемый компьютерной лабораторией для отправки электронной почты. Раньше он работал, пока они недавно не попытались изменить адрес электронной почты отправителя. Моя проблема? Я мало знаю об этом типе кодирования и о том, какие части кода они изменили. Я нашел функцию, которую они используют для отправки почты. Я надеялся, что кто-то может помочь мне указать, в чем будет проблема. Или что я могу изменить, чтобы заставить это работать. Я думаю, это потому, что пароль никогда не запрашивается. Но я не понимаю, что именно делал тот, кто написал этот код.
Вот код, на который я смотрю.
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";
Кто-нибудь сможет указать мне в правильном направлении. Или может кто-нибудь объяснить, как заставить программу выводить сообщение об ошибке? Я гуглил и нашел темы, в которых об этом говорили, но я все еще потерялся. Было бы лучше просто написать новый код и даже не пытаться его исправить, так как я новичок? Любая помощь очень ценится, так как я немного новичок в этом типе кода. Я могу прочитать и понять это, но … я не понимаю, в глубине функций.
Может быть проще переписать содержимое функции SendMail и использовать PHPMailer класс вместо ручного сокетного взаимодействия. Он может отправлять электронные письма разными способами — с помощью функции mail (), sendmail или SMTP. Его легко настроить, и он будет выдавать исключения, если что-то не так во время сеансов SMTP. Просто разместите его где-нибудь на своем сайте и посмотрите примеры, прилагаемые к пакету.
Других решений пока нет …