PHP PEAR Mail Sorunu

6 Cevap php

Ben harici bir SMTP sunucusu kullanarak göndermek için PEAR Mail'i kullanmaya çalışıyorum. Bir süre için askıda gibi görünüyor, daha sonra komut sona erer. Bu sonraya biri kadar benim kadar "echo" ifadeleri tüm çıktılar. Hiçbir şey "send önce" diyor yankı geçmiş çıktı. Herkes burada ne yanlış olabilir bana söyleyebilir? (SMTP değerleri ikame kukla değerler). Posta gönderiliyor değildir. Yardım için teşekkürler!

echo "start";
$n = $_POST['txtName'];
$e = $_POST['txtEmail'];
$t = 'Kenny <email@host.com>';
$f = 'Kenny <email@host.com>';
$s = 'CPA TEST';
$b = "name: $n email: $e"; 

include("mail.php");
echo "after include";
/* mail setup recipients, subject etc */
$recipients = $t;
$headers["From"] = $f;
$headers["To"] = $t;
$headers["Subject"] = $s;
$mailmsg = $b;
/* SMTP server name, port, user/passwd */
$smtpinfo["host"] = "my_smtp_host";
$smtpinfo["port"] = "25";
$smtpinfo["auth"] = true;
$smtpinfo["username"] = "my_email";
$smtpinfo["password"] = "my_password";
echo "before object";
/* Create the mail object using the Mail::factory method */
$mail_object =& Mail::factory("smtp", $smtpinfo);
echo "before send";
/* Ok send mail */
$send = $mail_object->send($recipients, $headers, $mailmsg);
echo "after send";
if (PEAR::isError($send)) { print($send->getMessage());}else{print "end";} 
echo "done";

6 Cevap

Posta çalıştığından emin olmak için, bu deneyin:

<?php
require_once "Mail.php";

$from = "Sandra Sender <sender@example.com>";
$to = "Ramona Recipient <recipient@example.com>";
$subject = "Hi!";
$body = "Hi,\n\nHow are you?";

$host = "mail.example.com";
$username = "smtp_username";
$password = "smtp_password";

$headers = array ('From' => $from,
  'To' => $to,
  'Subject' => $subject);
$smtp = Mail::factory('smtp',
  array ('host' => $host,
    'auth' => true,
    'username' => $username,
    'password' => $password));

$mail = $smtp->send($to, $headers, $body);

if (PEAR::isError($mail)) {
  echo("<p>" . $mail->getMessage() . "</p>");
 } else {
  echo("<p>Message successfully sent!</p>");
 }
?>

Bu işe yaramazsa o zaman PHP ayarlarını kontrol etmek gerekir.

http://php.net/manual/en/function.mail.php daha fazla bilgi için bkz.

Birisi Jayme gibi aynı sorun haline linux ve koşulara çalışıyorsa. Burada eksik "Net /" sınıfları yüklemek için başka bir basit bir çözümdür. Bu eksik sınıflar komut kesmek neden olur.

sudo pear install Net_SMTP

Ben send komutu asılı aynı sorunu içine koştu. Benim ilk adım (Rap yukarıda önerilen gibi) tam hata mesajı görmek için komut satırından çalıştırmak oldu.

php mymailsample.php

Bu aşağıdaki tükürmek

Warning:  include_once(Net/SMTP.php): failed to open stream: No such file or directory in mail/Mail/smtp.php on line 348
PHP Warning:  include_once(): Failed opening 'Net/SMTP.php' for inclusion (include_path='.:/usr/lib/php') in mail/Mail/smtp.php on line 348
PHP Fatal error:  Class 'Net_SMTP' not found inmail/Mail/smtp.php on line 349

Ben aşağıdaki indirilen ve / Net koyun

http://pear.php.net/package/Net_SMTP/download
http://pear.php.net/package/Net_Socket/download

Ben Apache tarafından okunabilir böylece SMTP ve Soket kütüphanelerin izinlerini ayarlamak zorunda.

Ve işte, bu çalıştı!

Todd'un senaryo mükemmel, ancak tarayıcınız kez dışarı SMTP bulmadan olduğunu sorununuzu çözmez. Sadece yarım sayfa ve sizin SMTP ayarlarını hata ayıklamak için kullanabileceğiniz herhangi bir hata iletisi göremiyoruz neden olmasıdır.

Çözeltisi doğrudan PHP komut dosyası çalıştırmak. Hiçbir zaman aşımı.

ISS, size kabuk erişimi vermek her dakika çalıştırmak için bir cron işi yaratmaz çünkü bunu yapamıyorsanız. Cron tam ayıklama ayrıntılarını olacak size çıkışını e-posta göndereceğiz.

Benim için kanal :/ / pear.php.net/Mail-1.2.0 does'nt işin yeniden yükleme. (Ubuntu 12.04)

Sadece caracter kaldır "&" Yeni önce

sudo vi /usr/share/php/Mail/smtp.php
    349         /*$this->_smtp = &new Net_SMTP($this->host, */
    350         $this->_smtp = new Net_SMTP($this->host,

Aslında aynı sorunla karşılaştı. Bir üretim komut dosyası bozuldu ve ben zor zaman bunu sorun giderme vardı. Gösterilmesini hataları önlemiş kadar çok kod yoktu çünkü. Sonuçta, ben, Kenny Ray'in kod kullanılmış benim çevre için çalışmak için modifiye edilmiş ve bir testi koştu. Bu Net_Socket şekilde kayboldu çıktı. Ben kaldırıldı ve yeniden monte onu, ve her şey tekrar çalışmaya başladım. Bu size yardımcı olur umarım.