Я согласен с @MihaiIorga в комментариях - используйте скрипт PHPMailer. Похоже, вы отклоняете его, потому что вам нужен более простой вариант. Поверьте мне, PHPMailer - это более простой вариант с очень большой разницей по сравнению с попыткой сделать это самостоятельно с помощью встроенной функции PHP mail()
. Функция mail()
на PHP действительно не очень хороша.
Чтобы использовать PHPMailer:
require_once('path/to/file/class.phpmailer.php');
Теперь отправка электронных писем с прикрепленными файлами идет от безумно трудно невероятно легко:
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
$email = new PHPMailer();
$email->From = 'you@example.com';
$email->FromName = 'Your Name';
$email->Subject = 'Message Subject';
$email->Body = $bodytext;
$email->AddAddress( 'destinationaddress@example.com' );
$file_to_attach = 'PATH_OF_YOUR_FILE_HERE';
$email->AddAttachment( $file_to_attach , 'NameOfFile.pdf' );
return $email->Send();
Просто одна строка $email->AddAttachment();
- вы не можете просить
Если вы сделаете это с помощью функции PHP mail()
, вы будете писать стопки кода, и вам, вероятно, будет очень сложно найти ошибки.
Всякий раз, когда код передает функцию или объект в API, возникает риск создания ссылок на объекты, что предотвратит сборку мусора. Это может привести к утечке памяти.
Метод $on
возвращает функцию, которая может использоваться для отмены привязки обработчика событий:
this.subscribe = function( scope, cb )
{
var deRegister = {};
deRegister.ActionChanged = $rootScope.$on('action-changed', cb);
deRegister.ProjectChanged = $rootScope.$on('project-changed', cb);
deRegister.FileChanged = $rootScope.$on('file-changed', cb);
scope.$on( '$destroy', function() {
deRegister.ActionChanged();
deRegister.ProjectChanged();
deRegister.FileChanged();
deRegister = null; //release deRegister object
scope = null; //release scope reference
cb = null; //release callback function reference
));
};
В дополнение к отмене регистрации обработчиков событий, код должен освобождать любые созданные ссылки на объекты. [ 114]