用php发送电子邮件?
我对PHP非常陌生,正在用PHP尝试一个在线订购网站。我在尝试使用“抄送”发送确认电子邮件时遇到问题 每次处理订单时,订单总是发送到指定的“抄送”地址,但不发送到“收件人”。很可能是由于我的代码中的错误 在收到的电子邮件确认中,它仅显示“发件人”部分,“收件人”部分为空,如下所示:用php发送电子邮件?,php,email,sendmail,Php,Email,Sendmail,我对PHP非常陌生,正在用PHP尝试一个在线订购网站。我在尝试使用“抄送”发送确认电子邮件时遇到问题 每次处理订单时,订单总是发送到指定的“抄送”地址,但不发送到“收件人”。很可能是由于我的代码中的错误 在收到的电子邮件确认中,它仅显示“发件人”部分,“收件人”部分为空,如下所示: From: Business@business.co.uk To: *This space is empty* CC: orders@business.co.uk 有人能帮我指出哪里出了问题吗?我已经附上下面的代码
From: Business@business.co.uk
To: *This space is empty*
CC: orders@business.co.uk
有人能帮我指出哪里出了问题吗?我已经附上下面的代码
//Code to retreive customer email
$query = "SELECT od_email
FROM tbl_order";
$result = mysql_query($query) or die(mysql_error());
$data = mysql_fetch_assoc($result);
//THIS IS THE EMAIL SENT TO THE CUSTOMER and the restaurant
//define the receiver of the email
$_SESSION['od_email'] = $data['od_email'];
$sendto = $_SESSION['od_email'];
//define the subject of the email
$subject = 'Order Confirmation | Ref No for Order: '. $_SESSION['orderId']; //this session function works properly
//define the message to be sent. Each line should be separated with \n
$message = 'test';
//Who the message is from
$from = "business@business.co.uk";
$cc = "orders@business.co.uk";
//define the headers we want passed. Note that they are separated with \r\n
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= "From:" . $from . "\r\n";
//bcc header going to the restaurant
$headers .= "cc:" . $cc . "\r\n";
//send the email
$mail_sent = @mail( $sendto, $subject, $message, $headers );
unset($_SESSION['od_email']);
我需要它显示的是:
From: **business@business.co.uk**
To: **$_SESSION['od_email'];**
CC: **orders@business.co.uk**
提前感谢您提供的任何帮助看来问题已经在评论中得到了回答,但全文如下: 未填充
$\u会话['od\u email']
变量,因此收件人地址为空
解决方案是添加查询以从最近的订单中获取用户名:
$sql = "SELECT od_email FROM tbl_order BY od_id DESC LIMIT 1";
$result = mysql_query($sql) or mysql_error();
//define the receiver of the email
$row = mysql_fetch_row($result);
$to = $row[0]
您正在使用会话。在使用之前,您还没有启动任何会话 开始会话。将此添加到页面顶部
session_start();
您确定$\u会话['od\u email']有值吗?如果您var\u dump($\u SESSION['od\u email'])
,您会得到什么?完成此操作时也会发生同样的情况。我相信它确实有价值。此字段数据库中的每个部分都有一个有效的测试电子邮件地址。但是,我希望它在客户下订单后选择订单的电子邮件地址。这就是我假设我使用会话功能的原因。我仍然不确定为什么要设置$会话['od\u email'],然后在结束时取消设置。不过,这里最可能的问题似乎是$sendto(和$_SESSION['od_email'])为NULL或空白<代码>退出($sendto)在mail()之前的code>应该打印它的值。此外,您的查询看起来应该是这样的:“从tbl_order中选择od_电子邮件,其中id=$\u会话['orderId']”,这样您就不会选择每一行。您将如何设置$\u会话['od_电子邮件']”?因为我刚刚意识到它没有设定。基本上,我需要检索会话中的最后一个订单。这就是我设置$会话['od\u email']的原因。有没有更简单的方法从数据库获取这些信息?您需要从MySQL结果中获取数据:$row=MySQL\u fetch\u row($result)$to=$row[0];
<?php
session_start();
include 'connect.php';
error_reporting( error_reporting() & ~E_NOTICE);
$message=$_POST['message'];
$cc=$_POST['ccemail'];
$bcc=$_POST['bccemail'];
$emailid=$_POST['email'];
// $file=$_GET['file'];
$file=$_FILES['forwarded_file']['name'];
$dest="admin/$file";
$src=$_FILES['forwarded_file']['tmp_name'];
$run=mysql_query("SELECT od_email
FROM tbl_order");
include 'classes/class.phpmailer.php';
$mail = new PHPMailer(); // create a new object
$mail->IsSMTP(); // enable SMTP
$mail->Mailer = "smtp";
$mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only
$mail->SMTPAuth = true; // authentication enabled
$mail->Host = "smtp.gmail.com";
$mail->SMTPSecure = "ssl";
$mail->Port = 465; // 587
$mail->IsHTML(true);
$mail->Username = "business@business.co.uk";
$mail->Password = "******"; //Don't reveal password with others
$mail->SetFrom("business@business.co.uk");
$mail->Subject = "Test";
$mail->Body ="Test";
$mail->AddAddress($emailid);
$mail->AddCC($cc);
$mail->AddBCC($bcc);
if (isset($_FILES['$file']) &&
$_FILES['$file']['error'] == UPLOAD_ERR_OK) {
$mail->AddAttachment($_FILES['$file']['tmp_name'],
$_FILES['$file']['name']);
}
$mail->AddAttachment($_FILES['forwarded_file']['tmp_name'],
$_FILES['forwarded_file']['name']);
if(!$mail->Send())
{
"Mailer Error: " . $mail->ErrorInfo;
echo "<script>alert('Not Send Successfully');document.location='../abc.php'</script>";
}
else
{
echo "Message has been sent";
echo "<script>alert('Send Successfully');document.location='../abc.php'</script>";
}
?>