如果您帮助我使用以下代码,我将不胜感激,因为我遵循了正确的步骤,但仍然没有收到带有附件的电子邮件。
如果你们中有人找到正确的问题,我们将不胜感激。
这是电子邮件的 smtp 设置:
$config = array(
"protocol" => "SMTP",
"smtp_host" => "domainname.com",
"smtp_port" => "465",
"smtp_timeout" => "7",
"smtp_user" => '[email protected]',
"smtp_pass" => "password",
"starttls" => TRUE,
"charset" => "iso-8859-1",
"mailtype" => "html",
"wordwrap" => TRUE,
"newline" => "\r\n",
"validate" => FALSE,
"smtp_keep_alive" => TRUE
);
$this->load->library('email', $config);
并且有发送电子邮件设置,请注意,我已上传文件并通过
DOCUMENT_ROOT
获取文件路径,但仍然没有收到带有附件的电子邮件,仅提供包含内容的空电子邮件
$this->email->from($Data['Email'], $Data['Name']);
$this->email->to('[email protected]');
$this->email->subject(sprintf('Email Send by - %s', $Data['Name']));
$this->email->message(sprintf('
Request ID: %s <br />
Name: %s <br />
Email: %s<br />
Colors: %s <br />
Quantity: %s<br />
Phone: %s<br />
Message: %s <br />
Target Price: %s'
, $PK,$Data['Name'], $Data['Email'], $Data['Colors'], $Data['Quantity'], $Data['Phone'], $Input->post('Config')['Message'],$Data['TargetPrice']));
//attachment
if($Row){
$ImagePath = GetFileRootPath($Row->EntryDate,'IMG',false,$Row->Image);;
// this function is returning this path - /home/User/public_html/domainname.com/resources/upload/img/2023/11/24/download.jpg
if($ImagePath){
$this->email->attach($ImagePath);
}
}
if($this->email->send()){
SetMessage('ENTRYSUCCESS');
} else {
SetMessage('ENTRYFAILED');
}
} else{
SetMessage('ENTRYFAILED');
}
下面再次提到 GetFileRootPath 函数的返回,以便于阅读: /home/User/public_html/domainname.com/resources/upload/img/2023/11/24/download.jpg
这就是我在附件功能中发送的内容,但仍然收到没有附件的电子邮件。
您是否记录了路径以确保其已设置?
if($ImagePath){
log_message($ImagePath);
$this->email->attach($ImagePath);
}
除非您在其他地方检查,否则我建议检查以确保文件存在。
if(is_file($ImagePath)){
$this->email->attach($ImagePath);
}
检查文件的权限,确保帐户用户有权访问该文件。
尝试附加一个简单的文本文件而不是图像文件,看看它是否与文件本身有关。接收服务器可能会将其删除。
顺便说一句,你这里多了一个分号:
$ImagePath = GetFileRootPath($Row->EntryDate,'IMG',false,$Row->Image);;