0
假設我的服務器有2個公有IP,Ruby中的步驟是使用第一個IP通過SMTP協議發送電子郵件,然後使用第二個IP?使用不同的公共IP通過SMTP發送電子郵件
我知道TCPSocket選項指定local_host
選項,但我找不到任何類似的SMTP,我無法找到接受已建成的套接字的構造函數的任何選項。
假設我的服務器有2個公有IP,Ruby中的步驟是使用第一個IP通過SMTP協議發送電子郵件,然後使用第二個IP?使用不同的公共IP通過SMTP發送電子郵件
我知道TCPSocket選項指定local_host
選項,但我找不到任何類似的SMTP,我無法找到接受已建成的套接字的構造函數的任何選項。
您可以爲網:: 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
對象。
感謝您的回答。我還發現以下內容: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 –
是的,根據我對HELO的理解域名更多的是一個名義上的「這條消息來自哪裏?」問題,並且與傳輸層問題無關,例如「我應該在哪個網絡接口上傳輸這些數據包?」這就是說,你當然可以試試看。 – philomory
好的謝謝,可能最好的選擇是繼承 –