oracle - 使用 PLSQL 发送电子邮件

标签 oracle plsql

我想使用 PL_SQL 通过 gmail 或 yahoo 主机发送电子邮件,我在 google 中搜索并找到 SMT.Mail 包,但它对我不起作用,请问任何人都可以指导我如何实现这一目标?

CREATE OR REPLACE PROCEDURE 
      send_mail (sender    IN VARCHAR2, 
                 recipient IN VARCHAR2, 
                 message   IN VARCHAR2, 
                 nStatus   OUT NUMBER) 
IS 
    mailhost    VARCHAR2(30) := 'smtp.gmail.com '; -- host mail addr 
    mail_conn  utl_smtp.connection; 
BEGIN 
    nStatus := 0; 
    mail_conn := utl_smtp.open_connection(mailhost, 25); 
    utl_smtp.helo(mail_conn, mailhost); 
    utl_smtp.mail(mail_conn, sender); 
    utl_smtp.rcpt(mail_conn, recipient); 
    utl_smtp.data(mail_conn, message); 
    utl_smtp.quit(mail_conn); 
EXCEPTION 
    WHEN OTHERS THEN 
        nStatus := SQLCODE; 
END send_mail;

当我测试此过程时,我得到:ORA-29278:SMTP 瞬时错误:421 服务不可用

最佳答案

您错过了服务器上的身份验证,请参阅 AUTH Function and Procedure

但是,我不知道gmail是否允许使用默认不安全的端口25。

关于oracle - 使用 PLSQL 发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35744566/

相关文章:

sql-server - T-SQL 相当于 Oracle 的 %TYPE 运算符?

sql - 为什么小写的 'i' 在执行 NLS_UPPER 后映射到 '?'

java - 消息 列类型无效 : getBLOB not implemented for class oracle. jdbc.driver.T4CLongRawAccessor

oracle - Aqua Data Studio 中的 PL/SQL 错误

mysql - 如何通过将表与其旧版本进行比较来获取更改的行?

oracle - 在更新或删除 oracle 中 2 个表之间的 FK 约束后触发

java - hibernate 中的并发更新处理

oracle - 我可以将 INSERT ALL 与多个记录类型变量一起使用吗?

php - 类似于 PL/SQL 中的 += 或 .= 的运算符?

oracle - 如何在 Oracle 包中执行私有(private)过程?