Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.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发送确认电子邮件_Php_Email_Sendmail - Fatal编程技术网

用PHP发送确认电子邮件

用PHP发送确认电子邮件,php,email,sendmail,Php,Email,Sendmail,我对PHP非常陌生,正在用PHP尝试一个在线订购网站。我在尝试使用“抄送”发送确认电子邮件时遇到问题 每次处理订单时,订单总是发送到指定为“$from”的“CC”地址,发件人(from)是“$to”部分中指定的地址。在收到的电子邮件确认中,它仅显示“发件人”部分,“收件人”和“抄送”为空,如下所示: From: **$_SESSION['od_email']** To: *This space is empty* CC: orders@business.co.uk 有人能帮我指出哪里出了问题吗

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

每次处理订单时,订单总是发送到指定为“$from”的“CC”地址,发件人(from)是“$to”部分中指定的地址。在收到的电子邮件确认中,它仅显示“发件人”部分,“收件人”和“抄送”为空,如下所示:

From: **$_SESSION['od_email']**
To: *This space is empty*
CC: orders@business.co.uk
有人能帮我指出哪里出了问题吗?我已经附上下面的代码

//THIS IS CODE FOR THE EMAIL WHICH IS AUTOMATICALLY SENT TO THE CUSTOMER AND THE BUSINESS WHEN AN ORDER IS SUCCESSFULLY COMPLETED
//define the receiver of the email
$to = $_SESSION['od_email'];
//define the subject of the email
$subject = 'Order Confirmation | Ref No for Order: '.  $_SESSION['orderId']; 
//define the message to be sent. Each line should be separated with \n
$message = 'test';
//Who the message is from
$from = "orders@business.co.uk";
$cc = "orders@business.co.uk";
//define the headers we want passed. Note that they are separated with \r\n
$headers = "From:" . $from;
//bcc header going to the to go to the business as confirmation
$headers = "cc:" . $cc;
//send the email
$mail_sent = @mail( $to, $subject, $message, $headers );
我需要它显示的是:

From: **orders@business.co.uk**
To: **$_SESSION['od_email'];**
CC: **orders@business.co.uk**

提前感谢您在设置CC时提供的任何帮助,您正在覆盖$headers中的内容。尝试:

$headers = "From:" . $from . "\r\n";
$headers.= "Cc:" . $cc;

如果这没有帮助的话,上面总是有PHP的文档。

我会尽全力处理您的标题,确保您设置了所有需要的内容

// To send HTML mail, the Content-type header must be set
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

// Additional headers
$headers .= 'To: ' .$to. "\r\n";
$headers .= 'From: ' .$from. "\r\n";
$headers .= 'Cc: '.$cc. "\r\n";
另外,我相信mail()需要一个有效的电子邮件地址,我不知道您在
$\u会话['od\u email']
之前是如何设置电子邮件的,但是如果您正在运行一个测试,并且确实希望
$\u会话['od\u email']
附带的
$\u会话['od\u email']
不起作用,它会将其视为无效电子邮件并返回false,因此不会返回任何内容。为了进一步诊断该问题,我们需要知道如何设置
$\u会话['od\u email']

编辑

好的,我很确定这个问题是由您如何根据下面的评论设置
$\u会话['od\u email]'
引起的

注意:我假设您的数据库是
$db
,但如果不是,您需要将
$db
更改为探测器名称

让我们试试这个,看看它是如何工作的

// Get Data from the Database
$query = "SELECT `od_email` FROM `tbl_order`";
$result = $db->query($query);
while ($data = $db->fetch_array($result)) {

// Set Up the SESSION email
$_SESSION['od_email'] = $data['od_email'];

// Prepare the Email
$to = $_SESSION['od_email'];
$subject = 'Order Confirmation | Ref No for Order: '.  $_SESSION['orderId']; 
$message = 'test';
$from = "orders@business.co.uk";
$cc = "orders@business.co.uk";

// To send HTML mail, the Content-type header must be set
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

// Additional headers
$headers .= 'To: ' .$to. "\r\n";
$headers .= 'From: ' .$from. "\r\n";
$headers .= 'Cc: '.$cc. "\r\n";

// Send the email
mail($to,$subject,$message,$headers);

}

他就不能添加一个@mail吗?比如

$mail_sent = @mail( $od_email, $subject, $message, $headers ); 

替换任何变量


始终适用于我。

请确保验证您的输入,以便没有人可以将标题插入其中。在邮件之后从何处删除@?从何处删除@时,您是否遇到任何异常或错误?好的,谢谢,现在它已更正了“从”部分。但是,应该发送给客户的“收件人”部分仍然是空白的。我会在PHP文档中尝试解决这个问题。您确定要使用$\u会话['od\u email']吗?您是否已将电子邮件存储在会话中。如果您提交表单,那么您通常会使用$\u POST['od\u email']或$\u GET['od\u email']进行更正,除非他没有将其设置为
$od\u email
他已将电子邮件设置为
$\u SESSION['od\u email']
,这也是
$to
,但正如我所说,我们不知道
$\u SESSION['od\u email']
正在设置中,如果没有这些知识,我们无法理解它为什么不发送。@ChrisJamesChampeau即使如此,如果变量已经设置为
od\u email
,那么理论上,它也应该向它发送电子邮件。如果看不到他的全部代码,很难判断问题到底出在哪里。好的,在本节之前,我有以下代码来设置email://code to retrieve customer email$query=“SELECT od_email FROM tbl_order”$result=mysql\u query($query)或die(mysql\u error())$data=mysql\u fetch\u assoc($result)//这是发送给客户和餐厅的电子邮件//定义电子邮件$_会话['od_EMAIL']=$data['od_EMAIL']的接收者$sendto=$_会话['od_电子邮件];我不能100%确定这是否正确
mail( $od_email, $subject, $message, $headers );