<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Sendzovo</title>
    <description>The latest articles on DEV Community by Sendzovo (@sendzovo).</description>
    <link>https://dev.to/sendzovo</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4223974%2Fc79a2fcd-96a2-4cb8-bec4-489c1b16de1b.png</url>
      <title>DEV Community: Sendzovo</title>
      <link>https://dev.to/sendzovo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sendzovo"/>
    <language>en</language>
    <item>
      <title>How to Send Transactional Emails Using SMTP and Email APIs</title>
      <dc:creator>Sendzovo</dc:creator>
      <pubDate>Tue, 03 Nov 2026 11:05:17 +0000</pubDate>
      <link>https://dev.to/sendzovo/how-to-send-transactional-emails-using-smtp-and-email-apis-c0</link>
      <guid>https://dev.to/sendzovo/how-to-send-transactional-emails-using-smtp-and-email-apis-c0</guid>
      <description>&lt;p&gt;Email is part of almost every modern application. Whether you are building an e-commerce store, a SaaS product, or a mobile app, you will eventually need to send emails automatically: a welcome message, a password reset link, an order confirmation.&lt;/p&gt;

&lt;p&gt;These are called &lt;strong&gt;transactional emails&lt;/strong&gt;, and there are two common ways to send them: &lt;strong&gt;SMTP&lt;/strong&gt; and an &lt;strong&gt;email API&lt;/strong&gt;. This guide explains both, shows a small code example for each, and covers the practices that help your emails actually reach the inbox.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Disclosure:&lt;/strong&gt; I'm part of the team behind Sendzovo, which is mentioned near the end of this article. The rest of the guide applies to any email provider.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What are transactional emails?
&lt;/h2&gt;

&lt;p&gt;Transactional emails are automated messages sent to a user after they do something in your app. Common examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Welcome emails after registration&lt;/li&gt;
&lt;li&gt;Password reset emails&lt;/li&gt;
&lt;li&gt;Email verification links&lt;/li&gt;
&lt;li&gt;Order confirmations and payment receipts&lt;/li&gt;
&lt;li&gt;Account activity notifications&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Unlike newsletters or promotions, users expect these messages right away, and they often can't continue without them. That is why delivery matters so much.&lt;/p&gt;

&lt;h2&gt;
  
  
  Option 1: SMTP
&lt;/h2&gt;

&lt;p&gt;SMTP (Simple Mail Transfer Protocol) is the standard protocol for sending email between servers. With an email delivery service, you put the provider's SMTP host and credentials into your app, and your app hands each message to that server.&lt;/p&gt;

&lt;p&gt;The flow looks like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A user performs an action in your app.&lt;/li&gt;
&lt;li&gt;Your app builds the email.&lt;/li&gt;
&lt;li&gt;The email is sent to the SMTP server.&lt;/li&gt;
&lt;li&gt;The receiving mail server processes the message.&lt;/li&gt;
&lt;li&gt;The message is delivered to the inbox, subject to filtering and delivery policies.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;SMTP is supported by almost every language, framework, and CMS, which makes it a good fit when you already have an SMTP-based setup.&lt;/p&gt;

&lt;p&gt;Here is an example with Node.js and &lt;a href="https://nodemailer.com/" rel="noopener noreferrer"&gt;Nodemailer&lt;/a&gt;. First, install it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install &lt;/span&gt;nodemailer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These examples use ES modules, so add &lt;code&gt;"type": "module"&lt;/code&gt; to your &lt;code&gt;package.json&lt;/code&gt; (or save the file as &lt;code&gt;.mjs&lt;/code&gt;). They also assume Node.js 18 or later.&lt;/p&gt;

&lt;p&gt;Keep credentials in environment variables, never in your source code. For example, in a &lt;code&gt;.env&lt;/code&gt; file (and never commit it to Git):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;SMTP_HOST&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;your-smtp-host
&lt;span class="nv"&gt;SMTP_USER&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;your-smtp-username
&lt;span class="nv"&gt;SMTP_PASS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;your-smtp-password
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Load them with the &lt;code&gt;dotenv&lt;/code&gt; package, or run your script with Node's &lt;code&gt;--env-file=.env&lt;/code&gt; flag (Node.js 20.6+). Then send the email:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;nodemailer&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;nodemailer&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;transporter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;nodemailer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createTransport&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;host&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;SMTP_HOST&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;587&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;auth&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;user&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;SMTP_USER&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;pass&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;SMTP_PASS&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;transporter&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sendMail&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;from&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;no-reply@yourdomain.com&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;to&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;user@example.com&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;subject&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Reset your password&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Click the link to reset your password.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Option 2: An email API
&lt;/h2&gt;

&lt;p&gt;An email API lets you send email with a plain HTTP request instead of an SMTP connection. You authenticate with an API key, send a JSON body, and handle the response in your code.&lt;/p&gt;

&lt;p&gt;The workflow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Get API credentials from your email provider.&lt;/li&gt;
&lt;li&gt;Store the key securely on your server.&lt;/li&gt;
&lt;li&gt;Build the request with the recipient, subject, and content.&lt;/li&gt;
&lt;li&gt;Send the authenticated HTTP request.&lt;/li&gt;
&lt;li&gt;Handle the API response, including errors.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A generic example (the exact endpoint and field names depend on your provider, so check their documentation):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;EMAIL_API_URL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;POST&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;Authorization&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`Bearer &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;EMAIL_API_KEY&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Content-Type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;application/json&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;from&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;no-reply@yourdomain.com&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;to&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;user@example.com&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;subject&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Reset your password&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Click the link to reset your password.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;}),&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ok&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// log the error and decide whether to retry&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Email request failed:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;status&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  SMTP vs email API
&lt;/h2&gt;

&lt;p&gt;Both get the message out. They differ in how you connect.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;SMTP&lt;/th&gt;
&lt;th&gt;Email API&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Connection&lt;/td&gt;
&lt;td&gt;SMTP protocol&lt;/td&gt;
&lt;td&gt;HTTP requests&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Authentication&lt;/td&gt;
&lt;td&gt;SMTP credentials&lt;/td&gt;
&lt;td&gt;API key&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Integration&lt;/td&gt;
&lt;td&gt;Configure host and credentials&lt;/td&gt;
&lt;td&gt;Call the API from your code&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Good fit for&lt;/td&gt;
&lt;td&gt;Existing SMTP-based systems, CMS plugins&lt;/td&gt;
&lt;td&gt;Modern apps and custom integrations&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;If your framework or tool already speaks SMTP, start there. If you want more control from your own code, use the API. Many teams use both.&lt;/p&gt;

&lt;h2&gt;
  
  
  Best practices for reliable delivery
&lt;/h2&gt;

&lt;p&gt;Sending is only half the job. Getting the email into the inbox is the other half.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Authenticate your domain&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Set up SPF, DKIM, and DMARC records for your sending domain.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SPF&lt;/strong&gt; lists which servers may send email for your domain.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DKIM&lt;/strong&gt; adds a cryptographic signature so receivers can check the message was not altered.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DMARC&lt;/strong&gt; tells receivers what to do when SPF or DKIM checks fail, and gives you reports.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Verify email addresses&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Typos and fake addresses cause bounces, and bounces hurt your sender reputation. Check addresses before you send, for example at signup. Useful checks include syntax, whether the domain has valid mail records (MX), and whether the address uses a disposable domain.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Keep content clear and relevant&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Use a meaningful subject line and keep the message focused on what the user just did. A password reset email should look like a password reset email.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Separate transactional and marketing email&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;They build different reputations. Keep critical messages like receipts and password resets apart from promotional sends, ideally on a different subdomain.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Monitor what happens after sending&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Watch delivery, bounces, and complaints so you can spot problems early, and stop sending to addresses that keep bouncing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Protect your credentials&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Never expose SMTP passwords or API keys in frontend code or public repositories. Store them on the server as environment variables, and rotate them if they leak.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Sendzovo fits in
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://sendzovo.com/" rel="noopener noreferrer"&gt;Sendzovo&lt;/a&gt; is a transactional email delivery and email verification platform. In short, it offers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Email delivery over &lt;strong&gt;SMTP&lt;/strong&gt; and a &lt;strong&gt;REST API&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Email verification&lt;/strong&gt;, for single addresses or lists, plus a verification API&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Message streams&lt;/strong&gt; and &lt;strong&gt;email templates&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Delivery health, email activity, and suppression tools in the dashboard&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;SMTP and API credentials are created automatically once you add and verify a sending domain.&lt;/p&gt;

&lt;p&gt;If you'd like to see how to get started with Sendzovo, here is a short walkthrough:&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/hLdxbItFXgg" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;If you just want to check an address, there is also a &lt;a href="https://sendzovo.com/tools/email-checker" rel="noopener noreferrer"&gt;Free Email Checker&lt;/a&gt; that shows whether an address looks deliverable, risky, or undeliverable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final thoughts
&lt;/h2&gt;

&lt;p&gt;SMTP and email APIs both work well for transactional email. SMTP is familiar and widely supported. An API gives you HTTP-based control from your own code. Whichever you choose, authenticate your domain, verify addresses, and keep an eye on your delivery results.&lt;/p&gt;

&lt;p&gt;If you have questions about either approach, leave a comment and I'll do my best to help.&lt;/p&gt;

&lt;p&gt;Happy coding!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>beginners</category>
      <category>api</category>
    </item>
  </channel>
</rss>
