用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 有人能帮我指出哪里出了问题吗?我已经附上下面的代码

我对PHP非常陌生,正在用PHP尝试一个在线订购网站。我在尝试使用“抄送”发送确认电子邮件时遇到问题

每次处理订单时,订单总是发送到指定的“抄送”地址,但不发送到“收件人”。很可能是由于我的代码中的错误

在收到的电子邮件确认中,它仅显示“发件人”部分,“收件人”部分为空,如下所示:

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>";
 }

?>