Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PL/SQL和Oracle从gmail发送电子邮件_Oracle_Email_Stored Procedures_Oracle11g_Job Scheduling - Fatal编程技术网

使用PL/SQL和Oracle从gmail发送电子邮件

使用PL/SQL和Oracle从gmail发送电子邮件,oracle,email,stored-procedures,oracle11g,job-scheduling,Oracle,Email,Stored Procedures,Oracle11g,Job Scheduling,我正在尝试建立一个程序,将电子邮件从“Gmail”帐户发送到另一个收据。你能帮我制定一个程序来完成这个目标吗。我需要的是调用程序发送“gmail”。如果有必要抄送邮件。我在下面提到了我试过的代码。谢谢大家! CREATE OR REPLACE PROCEDURE sendMail ( smtpHost IN VARCHAR2, smtpPort IN PLS_INTEGER DEFAULT 25, mailFrom IN VARCHAR2, rcptTo IN VARCHAR2, --ccs I

我正在尝试建立一个程序,将电子邮件从“Gmail”帐户发送到另一个收据。你能帮我制定一个程序来完成这个目标吗。我需要的是调用程序发送“gmail”。如果有必要抄送邮件。我在下面提到了我试过的代码。谢谢大家!

CREATE OR REPLACE PROCEDURE sendMail (
smtpHost IN VARCHAR2,
smtpPort IN PLS_INTEGER DEFAULT 25,
mailFrom IN VARCHAR2,
rcptTo IN VARCHAR2,
--ccs IN t_ccs,
messageSubject IN VARCHAR2,
messageBody IN VARCHAR2,
username IN VARCHAR2,
password IN VARCHAR2)
IS
l_conn UTL_SMTP.connection;
l_ccs VARCHAR2(2000);

l_encoded_username VARCHAR2(2000);
l_encoded_password VARCHAR2(2000);
BEGIN
--open connection
--l_conn := UTL_SMTP.open_connection(smtpHost, smtpPort);
--UTL_SMTP.helo(l_conn, smtpHost);


l_encoded_username := UTL_RAW.cast_to_varchar2(UTL_ENCODE.base64_encode(UTL_RAW.cast_to_raw(username)));
l_encoded_password := UTL_RAW.cast_to_varchar2(UTL_ENCODE.base64_encode(UTL_RAW.cast_to_raw(password)));
l_conn := UTL_SMTP.open_connection(smtpHost, smtpPort);
UTL_SMTP.ehlo(l_conn, smtpHost);--DO NOT USE HELO
UTL_SMTP.command(l_conn, 'AUTH', 'LOGIN');
UTL_SMTP.command(l_conn, l_encoded_username);
UTL_SMTP.command(l_conn, l_encoded_password);

--prepare headers
UTL_SMTP.mail(l_conn, mailFrom);
UTL_SMTP.rcpt(l_conn, rcptTo);

/*if we have multiple recipients or CCs, we must call UTL_SMTP.rcpt once for each one
however, we shall specify that there are CCs in the mail header in order for them to appear as such*/
/*IF ccs IS NOT NULL THEN
FOR i IN ccs.FIRST..ccs.LAST LOOP
UTL_SMTP.rcpt(l_conn, ccs(i));--add recipient
l_ccs:=l_ccs||ccs(i)||',';--mark as CC
END LOOP;
--now remove the trailing comma at the end of l_ccs
l_ccs:=substr(l_ccs,0,length(l_ccs)-1 );
END IF; */

--start multi line message
UTL_SMTP.open_data(l_conn);

--prepare mail header
/*DO NOT USE MON instead of MM in the date pattern if you run the script on machines with different locales as it will be misunderstood
and the mail date will appear as 01/01/1970*/
UTL_SMTP.write_data(l_conn, 'Date: ' || TO_CHAR(SYSDATE, 'DD-MM-YYYY HH24:MI:SS') || UTL_TCP.crlf);
UTL_SMTP.write_data(l_conn, 'To: ' || rcptTo || UTL_TCP.crlf);
UTL_SMTP.write_data(l_conn, 'Cc: ' || l_ccs || UTL_TCP.crlf);
UTL_SMTP.write_data(l_conn, 'From: ' || mailFrom || UTL_TCP.crlf);
UTL_SMTP.write_data(l_conn, 'Subject: ' || messageSubject || UTL_TCP.crlf || UTL_TCP.crlf);

--include the message body
UTL_SMTP.write_data(l_conn, messageBody || UTL_TCP.crlf || UTL_TCP.crlf);

--send the email
UTL_SMTP.close_data(l_conn);
UTL_SMTP.quit(l_conn);
END; 

它不起作用,因为要使用Google发送电子邮件,您必须使用正确的Google API:

详情如下:


  • 该方法包括使用GoogleAPI编写web服务,然后从数据库调用web服务

    请提及您的问题代码,即使它不完整。我现在已经提到了代码。我不会发送任何邮件。但是它执行正确。@chathu-这意味着问题不在于你的程序,而在于交付过程中的某些东西。例如,您的电子邮件有可能被垃圾邮件过滤器拒绝。