telnet 与 smtp 发送邮件

 
 
有时会遇到smtp发送邮件有问题。这时可以使用telnet快速测试一下是否是smtp server端有问题。
实例如下:
telnet 10.115.196.20 25
Trying 10.115.196.20...
Connected to 10.195.96.70.
Escape character is '^]'.
220 cnsh-rewrite-mta2.cn.jmj.com ESMTP Postfix
EHLO a875db.intra.jmj.cn
250-cnsh-rewrite-mta2.cn.jmj.com
250-PIPELINING
250-SIZE 20480000
250-VRFY
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
MAIL FROM: sysadmin@a875db.intra.jmj.cn
250 2.1.0 Ok
RCPT TO: ming@163.com
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
This is message
hello mail
.
250 2.0.0 Ok: queued as 264FF800004B
quit
221 2.0.0 Bye
Connection closed by foreign host.

收到邮件,说明smtp server没什么问题,发送不了邮件可能是应用配置什么的有问题。

 

utl_smtp发送邮件测试实例

### 创建调用的存储过程
CREATE OR REPLACE PROCEDURE jmj_send_mail (p_sender    IN VARCHAR2,
                                       p_recipient IN VARCHAR2,
                                       p_Title     IN VARCHAR2,
                                       p_message   IN VARCHAR2)
as
  l_mailhost VARCHAR2(255) := '10.115.96.20';
  l_mail_conn utl_smtp.connection;
  vmessage varchar(2000);
  crlf VARCHAR2(2) := CHR( 13 ) || CHR( 10 ); 
BEGIN
  l_mail_conn := utl_smtp.open_connection(l_mailhost, 25);      --定义SMTP服务器
  utl_smtp.helo(l_mail_conn, l_mailhost);                       --打开连接
  utl_smtp.mail(l_mail_conn, p_sender);                         --定义发件人
  utl_smtp.rcpt(l_mail_conn, p_recipient);                      --重复此函数,可以添加多个收件人
  utl_smtp.rcpt(l_mail_conn, 'ming@163.com');
  utl_smtp.open_data(l_mail_conn);
 
  --连接Mail字符串,格式一定要正确,否则发出去的Email会空白
  --Data最大长度为2000,超过2000可以多次调用 write_data 函数
  vmessage := 'Content-Type: text/plain; Charset=GB2312' || crlf || 
              'Date:' || TO_CHAR( SYSDATE, 'dd Mon yy hh24:mi:ss' ) || crlf || 
              'From: a875db.intra.jmj.cn' || crlf || 
              'Subject: ' || p_title || crlf || 
              'To: '|| p_recipient || crlf || 
              'Content-Type: text/plain; Charset=GB2312' || crlf || 
              '' || crlf || p_message || crlf ;
  utl_smtp.write_data(l_mail_conn, vmessage);
  utl_smtp.close_data(l_mail_conn );
  utl_smtp.quit(l_mail_conn);
end;
/

### 发送邮件
DECLARE 
  p_sender VARCHAR(40) := 'sysadmin@a875db.intra.jmj.cn';
  p_recipient VARCHAR(40) := 'jun@163.com';
  p_Title VARCHAR(40) := 'Title';
  p_message VARCHAR(400) := 'This is Message';
  
 BEGIN
     jmj_send_mail(p_sender,p_recipient,p_Title,p_message);
    END;
/

 

posted @ 2022-02-16 16:49  J老模  阅读(226)  评论(0)    收藏  举报