我尝试了一切,我不知道如何解决这个问题,所以,我正在使用这个Swift Mailer库发送确认电子邮件。所以这是我的index.php的代码
if($confirm){
//include the swift class
include_once 'inc/php/swift/swift_required.php';
//put info into an array to send to the function
$info = array(
'username' => $username,
'email' => $email,
'key' => $key);
//send the email
if(send_email($info)){
//email sent
$action['result'] = 'success';
array_push($text,'Thanks for signing up. Please check your email for confirmation!');
}else{
$action['result'] = 'error';
array_push($text,'Could not send confirm email');
}
}
我的send_email函数在另一个php文件functions.php
中//send the welcome letter
function send_email($info){
//format each email
$body = format_email($info,'html');
$body_plain_txt = format_email($info,'txt');
//setup the mailer
$transport = Swift_MailTransport::newInstance(smtp.gmail.com,465,ssl)
->setUsername('my email here')
->setPassword('my password');
$mailer = Swift_Mailer::newInstance($transport);
$message = Swift_Message::newInstance();
$message ->setSubject('Welcome to Site Name');
$message ->setFrom(array('somedomain.com' => 'somethinghere'));
$message ->setTo(array($info['email'] => $info['username']));
$message ->setBody($body_plain_txt);
$message ->addPart($body, 'text/html');
$result = $mailer->send($message);
return $result;
}
我得到的错误是
致命错误:在第31行的/srv/disk7/something/www/something/signup/inc/php/functions.php中调用未定义的方法Swift_MailTransport :: setUsername()
我该如何解决这个问题?我是php的初学者。
答案 0 :(得分:0)
我猜Swift_MailTransport::newInstance(smtp.gmail.com,465,ssl)
无法创建预期的实例。
Swift_MailTransport::newInstance('smtp.gmail.com',465,'ssl')
(即smtp.gmail.com和ssl in quotes )?
答案 1 :(得分:0)
Swift_MailTransport
,来自文档......
...通过委托给PHP的内部mail()函数发送消息。
根据我的经验 - 以及其他人 - mail()函数不是特别可预测或有用。
它没有的另一件事是setUsername
或setPassword
方法。
我想你要使用Swift_SmtpTransport
还有一件事;正如其他人所指出的那样,你的字符串参数应该被引用,即
$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, 'ssl');
答案 2 :(得分:-1)
看起来你还没有收到Swift Mail类。