我正在使用phpmailer向我的订阅者发送电子邮件。我有一个包含文本和图像的HTML文件。电子邮件发送成功,但奇怪的是我的图像没有显示。我的图片位于我的HTML文件的根目录中。有没有办法通过HTML文件发送电子邮件,图像位于我的本地目录?我将我的图像放在我的HTML文件中
<img src="images/log.png">
我不想在我的HTML文件中提供我的图片网址,如
<img src="www.mydomain.com/images/log.png">
这是我的代码:
$db_host = "localhost";
$db_username = "root";
$db_pass = "";
$link= mysqli_connect("$db_host","$db_username","$db_pass", "db") or die ("could not connect to mysql");
//if($link){echo "connect";}
// Import PHPMailer classes into the global namespace
// These must be at the top of your script, not inside a function
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
//Load Composer's autoloader
require 'vendor/autoload.php';
$mail = new PHPMailer(true); // Passing `true` enables exceptions
try {
$query = "select customer_email from subscribers";
$result = mysqli_query($link, $query) or die("No customer in the table");;
while($values = mysqli_fetch_array($result)){
$toemail = $values['customer_email'];
//Server settings
$mail->SMTPDebug = 1; // Enable verbose debug output
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = '(myhost)'; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = '(my email)'; // SMTP username
$mail->Password = '(my password)'; // SMTP password
$mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted
$mail->Port = 587; // TCP port to connect to
//Recipients
$mail->setFrom('haris.khan@premier.com.pk', 'Premier');
$mail->addAddress(''.$toemail.'', ''.$name.''); // Add a recipient
$mail->addReplyTo('haris.khan@premier.com.pk', 'Information');
//Content
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = 'Here is the subject';
ob_start();
include "file.html";
$contents = ob_get_clean();
$mail->msgHTML($contents);
$mail->send();
echo 'Message has been sent';
}
} catch (Exception $e) {
echo 'Message could not be sent. Mailer Error: ', $mail->ErrorInfo;
}
这是我的html文件
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Test</title>
</head>
<body>
<img src="images/logo.png">
<h1> Hello World ..!!! </h1>
<p> This is the <b> auto generated email from HTML Fie </b> for testing purpose. </p>
</body>
</html>
任何帮助都会非常明显。
答案 0 :(得分:0)
我不想在我的HTML文件中提供我的图片网址,如...
那么你在那里运气不好。电子邮件没有根URL,因此相对URL无法正常工作;如果要使用链接图像,必须包含主机名。
您唯一的选择是使用嵌入式图像,其中图像数据包含在消息中,尽管它不是您应该为大型卷做的事情,因为它非常低效。您可以使用addEmbeddedImage()
方法在PHPMailer中执行此操作,然后使用其cid
值来引用HTML中的图像。例如:
$mail->addEmbeddedImage('images/logo.png', 'logo');
然后在你的HTML中:
<img src="cid:logo">
msgHTML()
方法为您完成此操作。