gpt4 book ai didi

带有附件的 phpmailer 在 cron 作业中不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 09:40:49 26 4
gpt4 key购买 nike

我可以发送邮件,但不能使用 cron 作业发送邮件,我可以发送邮件,但不能使用 cronjob 发送附件......请我现在需要帮助......我在过去的 2 年中对此感到震惊天。

代码:

<?php

dirname(__FILE__);
$data;
$data1;
$d1="localhost";
$d2="username";
$d3="password";
mysql_connect($d1,$d2,$d3);
$d4="database name";
mysql_select_db($d4) or die("cannot connect db");
$sql = "select * from members";
$res = mysql_query($sql) or die("cannot select db");
$count = mysql_num_fields($res);

// fetch table header from database
$header = "";
for ($i = 0; $i < $count; $i++){
$header .= mysql_field_name($res, $i);
}

// fetch data each row, store on tabular row data
while($row = mysql_fetch_row($res)){
$line = "";
foreach($row as $value){
if(!isset($value) || $value == ""){
$value = "\t";
}else{
$value = str_replace("", "", $value);
$value = "" . $value . "" ;
}
$line .= $value;
}
$data1 .= trim($line)."\n";
$data = str_replace("\r", "", $data1);
}

$name=date("d-m-y")."-list.xls";
$ran=rand(1,1000);
$d5="exportfile";
$ourFileName =$d5;
$d6=".xls";
$et=$d6;

if(file_exists($ourFileName.$et))
file_put_contents($ourFileName.$ran.$et, $header."\n".$data);

$file=$ourFileName.$ran.$et;
require("class.phpmailer.php");
require("class.smtp.php");
require("/home/freetech/public_html/akw/PHPMailer-master/PHPMailerAutoload.php");
$mail = new PHPMailer();
$mail->IsSMTP(); // telling the class to use SMTP
$mail->SMTPAuth = true;
$us="username";
$pswd="password";
$hst="server link";
$frm="akw@hostname.com"; // Enable SMTP authentication
$mail->Username = $us; // SMTP username
$mail->Password = $pswd;
$mail->SMTPSecure = 'ssl';
$mail->Host = $hst; // SMTP server
$mail->Port =465;
$mail->From = $frm;

$mail->AddAddress("email address");

$mail->Subject = "First PHPMailer Message";
$mail->Body = "Hi! \n\n This is my first e-mail.";
$mail->AddAttachment("/home/freetech/public_html/akw/".$file); // attachment
$mail->WordWrap = 50;
$mail->Send();
?>

最佳答案

cronjob 和 apache 用户可能不同。因此他们不能发送彼此的文件或使用他们的类(class)。

如果附加的文件需要由 apache 和 cronjob 发送,请确保 cronjob 是为有权使用该文件或类的用户准备的。

检查您用于保存附件文件的目录的所有者和权限。此外,检查任何所需类的这些。

ll -a /home/freetech/public_html/

akw 目录列出了什么?

然后检查哪个用户正在运行 cronjob。在命令行上以 root 身份尝试此操作:

for user in $(cut -f1 -d: /etc/passwd); do crontab -u $user -l; done

如果不是 root,则一次尝试一个用户:

crontab -u apache -l
crontab -u freetech -l

如果 cronjob 在 freetech 中,那么找到你在哪个组中:

groups freetech
id -Gn freetech

然后更改该 akw 目录上的组以匹配:

cd /home/freetech/public_html/
chown apache:freetech akw
chmod 774 akw

至于让你的代码看起来更漂亮......一个用phpmailer发送附件的例子:

Example 1/Example 2

关于带有附件的 phpmailer 在 cron 作业中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21745612/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com