Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 添加附件时尝试通过不同的smtp服务发送电子邮件_Php_Email_Smtp_Pear - Fatal编程技术网

Php 添加附件时尝试通过不同的smtp服务发送电子邮件

Php 添加附件时尝试通过不同的smtp服务发送电子邮件,php,email,smtp,pear,Php,Email,Smtp,Pear,我在使用PEAR时遇到了一个问题 $smtp = Mail::factory ('smtp', $params); 要通过自定义电子邮件服务器重定向smtp并添加附件(实际上有几个附件),这似乎是不可能的 $HeadersCO = array ( 'From' => $From, 'Return-path' => $From, 'To' => $Email,

我在使用PEAR时遇到了一个问题

$smtp = Mail::factory ('smtp', $params);
要通过自定义电子邮件服务器重定向smtp并添加附件(实际上有几个附件),这似乎是不可能的

$HeadersCO = array (
                'From' => $From,
                'Return-path' => $From,
                'To' => $Email,
                'Subject' => $Subject2C,
                'Reply-To' => $From,
                'Date' => date("r"),
                'Errors-To' => $Admin_Email,
                'Return-Path' => $Company,
                'X-Mailer' => "PHP v".phpversion(),
                'X-Domain' => $SERVER_NAME,
                'X-Page' => $PHP_SELF,
                'Content-type' => $contentUTF8,
                'MIME-Version' => $mime);

            $mimeCO = new Mail_mime(array('eol' => $crlf));

            $mimeCO->setTXTBody($textcontent);  //Text version
            $mimeCO->setHTMLBody($message);  //HTML version

            $imgNo=0;   
            while ($imgNo < $totalImages) {     
                $imageAtt = $imgarr[$imgNo];
                $mimeCO->addAttachment($imageAtt, 'image/jpg');
                $imgNo++;
            }   

            $bodyCO = $mimeCO->get();
            $hdrsCO = $mimeCO->headers($HeadersCO);

            $mail2C = $smtp->send($email, $hdrsCO, $bodyCO);
$HeadersCO=数组(
'From'=>$From,
“返回路径”=>$From,
'至'=>$电子邮件,
“主题”=>$Subject2C,
'回复'=>$From,
“日期”=>日期(“r”),
'发送到'=>$Admin\u电子邮件的错误,
“返回路径”=>$Company,
'X-Mailer'=>“PHP v”.phpversion(),
“X域”=>$SERVER\u NAME,
“X-Page”=>PHP\u SELF美元,
“内容类型”=>$contentUTF8,
“MIME版本”=>$MIME);
$mimeCO=new Mail_mime(数组('eol'=>$crlf));
$mimeCO->setTXTBody($textcontent)//文本版本
$mimeCO->setHTMLBody($message)//HTML版本
$imgNo=0;
而($imgNo<$totalImages){
$imageAtt=$imgarr[$imgNo];
$mimeCO->addAttachment($imageAtt,'image/jpg');
$imgNo++;
}   
$bodyCO=$mimeCO->get();
$hdrsCO=$mimeCO->headers($HeadersCO);
$mail2C=$smtp->send($email、$hdrsCO、$bodyCO);
这将向正确的电子邮件服务器发送一封包含嵌入图像但没有附加图像的电子邮件。
$mimeCO->addAttachment($imageAtt,'image/jpg')似乎根本不起作用,即使我只创建了一个带有特定文件的附件


我在某个地方读到,当使用PEAR mime&mail时,您可以将电子邮件重定向到不同的SMTP服务或添加附件,但不能两者兼而有之。这是正确的吗?如果是,那么这就解释了为什么我在PEAR中使用
$smtp->send
发送附件时遇到问题。

我能够通过使用PHPMailer解决PEAR[通过外部smtp服务器发送并添加附件]的局限性这一难题

我将PHPMailer设置为打开外部SMTP通道,发送最多4封不同的电子邮件,然后关闭SMTP会话,同时选择哪些电子邮件包含附件、图像嵌入、不同主题、不同正文、回复地址、发件人和地址

总的来说,我的代码从1400多行下降到800行以下,我对这段代码的灵活性非常满意

以下是新PHPMailer代码的核心:

$mail = new PHPMailer(true);     // Passing `true` enables exceptions

$mail->SMTPDebug = false;        //3 Enables SMTP debugging, 0 turns off 
$mail->isSMTP();                 //Set PHPMailer to use SMTP.  
$mail->SMTPKeepAlive = true;     //Keep SMTP alive            
$mail->Host = "smtp.emailserver.com";//Specify external SMTP servers  
$mail->SMTPAuth = true;                          
$mail->Username = "username@mail.domain.com";               
$mail->Password = "mypass";                           
$mail->SMTPSecure = "tls";       // Enable encryption, 'ssl'                        
$mail->Port = 587;               //Set TCP port to connect to

//Recipients
$mail->addReplyTo('company@mail.domain.com', 'Company Name');
$mail->setFrom('company@mail.domain.com', 'Company Name');  
//Add recipeints
$mail->addAddress($Email, "'".$FirstName." ".$LastName."'");
//CC and BCC
$mail->addBCC('me@mail.domain.com', "WebMaster Backup");
$mail->addCC('company@domain.com', "CC Backup");

//Attachments from array using PHP
$imgNo=0;   
while ($imgNo < $totalImages) { 
    $imageAtt = $imgArray[$imgNo];
    $imageNam = $imgName[$imgNo];
    $mail->addAttachment($imageAtt, $imageNam);
    $imgNo++;
}       

//Content
$mail->Subject = $Subject2C;
$mail->Body    = $message;
$mail->AltBody = $textcontent;
$mail->isHTML(true); //Set email to be sent as HTML, false for Text only

/* =============Sending Customer Email====#1====== */
if($mail->send()) {  


/* ==============Sending Company Email=====#2====== */
$mail->clearReplyTos();
$mail->clearAllRecipients(); // clear all Address/CC/BCC
$mail->clearAttachments(); 
$mail->addReplyTo($Email, "'".$FirstName." ".$LastName."'");
$mail->setFrom($Email, "'".$FirstName." ".$LastName."'");  
$mail->addAddress('company@mail.domain.com', 'Email Sent');
$mail->addBCC('me@mail.domain.com', "WebMaster Backup");
$mail->Subject = $Subject2Company;
$mail->Body    = $MessageEmail;
$mail->AltBody = $textcontent; 
$mail->AltBody = $textcontent;
$mail->isHTML(true);

$mail->send();

/* ==============Subscribing Email=========#3====== */
$mail->clearAttachments(); 
$mail->clearReplyTos();
$mail->clearAllRecipients();
$mail->clearCCs();
$mail->addReplyTo('company@mail.domain.com', 'Company Name');
$mail->setFrom('company@mail.domain.com', 'Company Name');      
$mail->addAddress($listmail, 'Subscribe List');     
$mail->addBCC('me@mail.domain.com', "WebMaster Backup");        
$mail->Subject = $subject;
$mail->Body    = $SMessage;
$mail->AltBody = $body;
$mail->isHTML(false); 
$mail->send();

$mail->SmtpClose(); //closing SMTP session
$mail=new PHPMailer(true);//传递'true'将启用异常
$mail->SMTPDebug=false//3启用SMTP调试,0关闭
$mail->isSMTP()//将PHPMailer设置为使用SMTP。
$mail->SMTPKeepAlive=true//保持SMTP活动
$mail->Host=“smtp.emailserver.com”//指定外部SMTP服务器
$mail->SMTPAuth=true;
$mail->Username=”username@mail.domain.com";               
$mail->Password=“mypass”;
$mail->SMTPSecure=“tls”//启用加密“ssl”
$mail->Port=587//设置要连接到的TCP端口
//接受者
$mail->addReplyTo('company@mail.domain.com“,”公司名称“);
$mail->setFrom('company@mail.domain.com“,”公司名称“);
//添加收件人
$mail->addAddress($Email,“.”“$FirstName.”“$LastName.”);
//抄送和密件抄送
$mail->addBCC('me@mail.domain.com“,“网站管理员备份”);
$mail->addCC('company@domain.com“,“抄送备份”);
//使用PHP从数组中获取附件
$imgNo=0;
而($imgNo<$totalImages){
$imageAtt=$imgArray[$imgNo];
$imageNam=$imgName[$imgNo];
$mail->addAttachment($imageAtt,$imageNam);
$imgNo++;
}       
//内容
$mail->Subject=$Subject2C;
$mail->Body=$message;
$mail->AltBody=$textcontent;
$mail->isHTML(true)//将电子邮件设置为以HTML格式发送,仅文本设置为false
/*================发送客户电子邮件=====#1==============*/
如果($mail->send()){
/*=====================发送公司电子邮件=========================2===============*/
$mail->clearReplyTos();
$mail->clearAllRecipients();//清除所有地址/CC/BCC
$mail->clearAttachments();
$mail->addReplyTo($Email,“'.”$FirstName.“$LastName.”);
$mail->setFrom($Email,“'.$FirstName.”“$LastName.”);
$mail->addAddress('company@mail.domain.com“,”发送电子邮件“);
$mail->addBCC('me@mail.domain.com“,“网站管理员备份”);
$mail->Subject=$Subject2Company;
$mail->Body=$MessageEmail;
$mail->AltBody=$textcontent;
$mail->AltBody=$textcontent;
$mail->isHTML(true);
$mail->send();
/*=============================================================================================3*/
$mail->clearAttachments();
$mail->clearReplyTos();
$mail->clearAllRecipients();
$mail->clearCCs();
$mail->addReplyTo('company@mail.domain.com“,”公司名称“);
$mail->setFrom('company@mail.domain.com“,”公司名称“);
$mail->addAddress($listmail,'Subscribe List');
$mail->addBCC('me@mail.domain.com“,“网站管理员备份”);
$mail->Subject=$Subject;
$mail->Body=$SMessage;
$mail->AltBody=$body;
$mail->isHTML(错误);
$mail->send();
$mail->SmtpClose();//关闭SMTP会话

你尝试过类似PHPMailer的东西吗?嗨,谢谢。我没有。我的代码纯粹是PHP,但想通过另一个邮件服务器重定向,这让我想到了PEAR。在当前代码上投入了大量时间,我只是想看看是否有一个解决方案w/PEAR。我听说过Swift Mailer和PHPMailer。想想看吧e later已经存在更长时间了?我不确定,但我想你可以查一下。其中任何一个都应该是可配置的,允许你使用任何你喜欢的邮件服务器。