2017-04-07 23 views
0

假設我的服務器有2個公有IP,Ruby中的步驟是使用第一個IP通過SMTP協議發送電子郵件,然後使用第二個IP?使用不同的公共IP通過SMTP發送電子郵件

我知道TCPSocket選項指定local_host選項,但我找不到任何類似的SMTP,我無法找到接受已建成的套接字的構造函數的任何選項。

回答

1

您可以爲網:: SMTP類Ruby的標準庫中的類有一個創建新的Socket私人tcp_socket方法的源代碼,請參閱:

def tcp_socket(address, port) 
    TCPSocket.open address, port 
end 

你可以繼承Net::SMTP和覆蓋該方法返回其他內容,或者只是在需要快速和骯髒的情況下對其進行修補。

注意,直接設置@socket instance_variable(使用instance_variable_set)是去上班;儘管名稱不變,但此實例變量不包含普通的Socket實例,它包含類Net::InternetMessageIO的包裝對象,該對象本身可能會包裝一個OpenSSL::SSL::Socket對象,該對象又會包裝實際的TCPSocket對象。

+0

感謝您的回答。我還發現以下內容:https://ruby-doc.org/stdlib-2.3.3/libdoc/net/smtp/rdoc/Net/SMTP.html#class-Net::SMTP-label-HELO+domain would this訣竅嗎?看起來你實際上可以通過HELO域設置IP地址,但基於你鏈接的源,只用於聲明你來自的域,而不是實際使用指定的IP –

+0

是的,根據我對HELO的理解域名更多的是一個名義上的「這條消息來自哪裏?」問題,並且與傳輸層問題無關,例如「我應該在哪個網絡接口上傳輸這些數據包?」這就是說,你當然可以試試看。 – philomory

+0

好的謝謝,可能最好的選擇是繼承 –

相關問題