Odeslání emailu z PHP skriptu pomocí SMTP

272 zhlédnutíWebhostingsmtp SMTP nefunkční SMTP(S)
0

Dobrý den,

využívám frameworku CodeIgniter4 který má třídu pro odeslání emailu přes SMTP, nicméně mi to nefunguje, zde posílám jaké mám nastavení. Zřídíl jsem si emailovou schránku no-reply@zdraveobedy.eu. Používám email zřízené emailové schránky v $SMTPUser a její heslo v $SMTPPass. Když změním $protocol na ‚mail‘ tak to funguje ale chci používat SMTP a nikoli funkci mail(). Zkoušel jsem i jiné porty a šifrování.

Děkuji za rady

<?php
 namespace Config;
 use CodeIgniter\Config\BaseConfig;
 class Email extends BaseConfig
{
 /**
  * @var string
  */
 public $fromEmail;
  /**
  * @var string
  */
 public $fromName;
  /**
  * @var string
  */
 public $recipients;
  /**
  * The "user agent"
  *
  * @var string
  */
 public $userAgent = 'CodeIgniter';
  /**
  * The mail sending protocol: mail, sendmail, smtp
  *
  * @var string
  */
 public $protocol = 'smtp';
  /**
  * The server path to Sendmail.
  *
  * @var string
  */
 public $mailPath = '/usr/sbin/sendmail';
  /**
  * SMTP Server Address
  *
  * @var string
  */
 public $SMTPHost = 'wes1-smtp.wedos.net';
  /**
  * SMTP Username
  *
  * @var string
  */
 public $SMTPUser = 'no-reply@zdraveobedy.eu';
  /**
  * SMTP Password
  *
  * @var string
  */
 public $SMTPPass = 'zde mam heslo';
  /**
  * SMTP Port
  *
  * @var integer
  */
 public $SMTPPort = 587;
  /**
  * SMTP Timeout (in seconds)
  *
  * @var integer
  */
 public $SMTPTimeout = 5;
  /**
  * Enable persistent SMTP connections
  *
  * @var boolean
  */
 public $SMTPKeepAlive = false;
  /**
  * SMTP Encryption. Either tls or ssl
  *
  * @var string
  */
 public $SMTPCrypto = 'tls';
  /**
  * Enable word-wrap
  *
  * @var boolean
  */
 public $wordWrap = true;
  /**
  * Character count to wrap at
  *
  * @var integer
  */
 public $wrapChars = 76;
  /**
  * Type of mail, either 'text' or 'html'
  *
  * @var string
  */
 public $mailType = 'html';
  /**
  * Character set (utf-8, iso-8859-1, etc.)
  *
  * @var string
  */
 public $charset = 'UTF-8';
  /**
  * Whether to validate the email address
  *
  * @var boolean
  */
 public $validate = false;
  /**
  * Email Priority. 1 = highest. 5 = lowest. 3 = normal
  *
  * @var integer
  */
 public $priority = 3;
  /**
  * Newline character. (Use “\r\n” to comply with RFC 822)
  *
  * @var string
  */
 public $CRLF = "\r\n";
  /**
  * Newline character. (Use “\r\n” to comply with RFC 822)
  *
  * @var string
  */
 public $newline = "\r\n";
  /**
  * Enable BCC Batch Mode.
  *
  * @var boolean
  */
 public $BCCBatchMode = false;
  /**
  * Number of emails in each BCC batch
  *
  * @var integer
  */
 public $BCCBatchSize = 200;
  /**
  * Enable notify message from server
  *
  * @var boolean
  */
 public $DSN = false;
 }

Role: Zákazník
Odpověděl na otázku
0

Zdravím, nelze v aplikace zapnout debug nebo error log  a podívat se, co je špatně?

Role: Zákazník+ Web: https://socl.cz Vizitka: Jsem s Wedosem už od roku 2011. :)
publikoval nový komentář

Dobrý den,
zkoušel jsem zapnout error log u Wedosu, ale ten vygeneruje prázdnou tabulku. Ale vím že mi $email->send() vrací false. Chyba může být jakákoliv… ještě mě napadá doinstalovat Phpmailer knihovnu a zkusit to přes to…

0
220 wes1-so2.wedos.net ESMTP Postfix - S.T.A.N.D.A. postak OUT
 hello: 250-wes1-so2.wedos.net
250-PIPELINING
250-SIZE 104857600
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
starttls: 220 2.0.0 Ready to start TLS
hello: 250-wes1-so2.wedos.net
250-PIPELINING
250-SIZE 104857600
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
from: 250 2.1.0 Ok
to: 553 5.7.1 : Sender address rejected: not owned by user no-reply@zdraveobedy.eu
The following SMTP error was encountered: 553 5.7.1 : Sender address rejected: not owned by user no-reply@zdraveobedy.eu
quit: 221 2.0.0 Bye
Unable to send email using PHP SMTP. Your server might not be configured to send mail using this method.
Date: Tue, 28 Sep 2021 10:57:00 +0200
From: =?UTF-8?Q?Zdrav=C3=A9=20ob=C4=9Bdy?= <censored.email@email.cz>
Return-Path: <censored.email@email.cz>
To: zdraveobedy@email.cz
Subject: =?UTF-8?Q?Nov=C3=A1=20zpr=C3=A1va=20-=20Zdrav=C3=A9=20ob=C4=9Bdy?=
Reply-To: <censored.email@email.cz>
User-Agent: CodeIgniter
X-Sender: censored.email@email.cz
X-Mailer: CodeIgniter
X-Priority: 4 (Low)
Message-ID: <6152d8dced6472.83061545@email.cz>
Mime-Version: 1.0
  Content-Type: multipart/alternative; boundary="B_ALT_6152d8dced6562.42657457"
 This is a multi-part message in MIME format.
Your email application may not support this format.
 --B_ALT_6152d8dced6562.42657457
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Tak podařilo se mi nakonec vytisknout debug, zde je výsledek:

Role: Zákazník
Změnil status na publikováno
0

Co zkusit použít port 465, který se dafultně pužívá pro SSL/TLS

Role: Zákazník
Změnil status na publikováno
0
PK265670 38.09K - WEDOS Internet, a.s. 1 Komentář

Dobrý den,

určitě doporučuji nastavit port 587 a zabezpečení TLS pro odesílání z webové aplikace viz.:

https://www.wedos.cz/odesilani-emailu

Dle chyby Sender address rejected: not owned by user no-reply@zdraveobedy.eu z logu by mohl být problém v nastavení hodnoty odesílatele $fromEmail. Pokud je to možné, tak zde zkuste přímo nastavit e-mailovou adresu odesílatele.

Role: Podpora
publikoval nový komentář

Ano podle tohoto článku je port 587, ale informaci ještě prověřil.
Standartně se pro SMTP servery používají porty:
SSL/TLS – 465
STARTTLS – 587