Это фрагмент кода для отправки почты любому, кто использует SMTP.
Ниже приведен код, настроенный для gmail SMT P. Если у вас есть другие, его можно настроить.
blockquote>import smtplib from email.MIMEMultipart import MIMEMultipart from email.MIMEText import MIMEText msg = MIMEMultipart() msg['From'] = 'me@gmail.com' msg['To'] = 'you@gmail.com' msg['Subject'] = 'Enter subjecy of msg here' message = 'here is the email' msg.attach(MIMEText(message)) # GMAIL_SMTP_HOST = 'smtp.gmail.com' # GMAIL_SMTP_PORT = '587' mailserver = smtplib.SMTP('smtp.gmail.com',587) # secure our email with tls encryption mailserver.starttls() mailserver.sendmail('me@gmail.com','you@gmail.com',msg.as_string()) mailserver.quit()
Это метод расширения . См. Здесь объяснение .
Методы расширения позволяют разработчикам добавлять новые методы в общий доступ контракт существующего типа CLR без необходимости его подкласса или перекомпилировать исходный тип. Методы расширения помогают смешать гибкость поддержки "утиного ввода", популярная в динамических языках сегодня с производительностью и проверкой во время компиляции строго типизированные языки.
Методы расширения позволяют использовать множество полезных сценариев и помогают создавать возможна действительно мощная структура запросов LINQ ...
это означает, что вы можете вызывать
MyClass myClass = new MyClass();
int i = myClass.Foo();
, а не
MyClass myClass = new MyClass();
int i = Foo(myClass);
Это позволяет создавать плавные интерфейсы , как указано ниже.
Это методы расширения . Добро пожаловать в совершенно новый свободный мир . :)
Я только что на днях узнал об этом: ключевое слово this определяет, что метод является расширением класса, который его выполняет. Итак, для вашего примера MyClass будет иметь новый метод расширения под названием Foo (который не принимает никаких параметров и возвращает int; его можно использовать, как и любой другой общедоступный метод).